




from __future__ import annotations

from string import ascii_letters




def  a_		(							__snake_case     ,		__snake_case     ,		__snake_case = None					)	->			str:

			'''simple docstring'''


			UpperCamelCase_     				= alphabet or ascii_letters

			# The final result string
			UpperCamelCase_     				= ''

			for character in input_string:
						if character not in alpha:
									# Append without encryption if character is not in the alphabet
									result += character
						else:
									# Get the index of the new key and make sure it isn't too large
									UpperCamelCase_     				= (alpha.index(__snake_case					) + key) % len(__snake_case					)

									# Append the encoded character to the alphabet
									result += alpha[new_key]

			return result




def  a_		(							__snake_case     ,		__snake_case     ,		__snake_case = None					)	->			str:

			'''simple docstring'''


			key *= -1

			return encrypt(__snake_case     ,		__snake_case     ,		__snake_case					)




def  a_		(							__snake_case     ,		__snake_case = None					)	->			dict[int, str]:

			'''simple docstring'''


			UpperCamelCase_     				= alphabet or ascii_letters

			# To store data on all the combinations
			UpperCamelCase_     				= {}

			# Cycle through each combination
			for key in range(1     ,		len(__snake_case					) + 1					):
						# Decrypt the message and store the result in the data
						UpperCamelCase_     				= decrypt(__snake_case     ,		__snake_case     ,		__snake_case					)

			return brute_force_data


if __name__ == "__main__":
				while True:
								print(f"""\n{'-' * 10}\n Menu\n{'-' * 10}""")
								print(*["""1.Encrypt""", """2.Decrypt""", """3.BruteForce""", """4.Quit"""], sep="""\n""")

								# get user input
								__a			:	Tuple							     =		input("""\nWhat would you like to do?: """).strip() or """4"""

								# run functions based on what the user chose
								if choice not in ("1", "2", "3", "4"):
												print("""Invalid choice, please enter a valid choice""")
								elif choice == "1":
												__a			:	Union[str, Any]							     =		input("""Please enter the string to be encrypted: """)
												__a			:	List[Any]							     =		int(input("""Please enter off-set: """).strip())

												print(encrypt(input_string, key))
								elif choice == "2":
												__a			:	Union[str, Any]							     =		input("""Please enter the string to be decrypted: """)
												__a			:	str							     =		int(input("""Please enter off-set: """).strip())

												print(decrypt(input_string, key))
								elif choice == "3":
												__a			:	str							     =		input("""Please enter the string to be decrypted: """)
												__a			:	Union[str, Any]							     =		brute_force(input_string)

												for key, value in brute_force_data.items():
																print(f"""Key: {key} | Message: {value}""")

								elif choice == "4":
												print("""Goodbye.""")
												break






def  a_		(							__snake_case					)	->			str:

			'''simple docstring'''


			return " ".join([word[::-1] for word in input_str.split()]					)


if __name__ == "__main__":
				import doctest

				doctest.testmod()
