



'''simple docstring'''






from __future__ import annotations

from string import ascii_letters


def 			snake_case_					( _lowerCAmelCase  :						str       ,				_lowerCAmelCase  :						int       ,				_lowerCAmelCase  :						str | None = None  )				->       str:
							UpperCAmelCase			:	Union[str, Any]										=		alphabet or ascii_letters

							# The final result string
							UpperCAmelCase			:	Optional[int]										=		''''''

							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			:	int										=		(alpha.index(_lowerCAmelCase  ) + key) % len(_lowerCAmelCase  )

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

							return result


def 			snake_case_					( _lowerCAmelCase  :						str       ,				_lowerCAmelCase  :						int       ,				_lowerCAmelCase  :						str | None = None  )				->       str:
							key *= -1

							return encrypt(_lowerCAmelCase       ,				_lowerCAmelCase       ,				_lowerCAmelCase  )


def 			snake_case_					( _lowerCAmelCase  :						str       ,				_lowerCAmelCase  :						str | None = None  )				->       dict[int, str]:
							UpperCAmelCase			:	Union[str, Any]										=		alphabet or ascii_letters

							# To store data on all the combinations
							UpperCAmelCase			:	List[str]										=		{}

							# Cycle through each combination
							for key in range(1       ,				len(_lowerCAmelCase  ) + 1  ):
														# Decrypt the message and store the result in the data
														UpperCAmelCase			:	Optional[Any]										=		decrypt(_lowerCAmelCase       ,				_lowerCAmelCase       ,				_lowerCAmelCase  )

							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
												UpperCamelCase__:       Union[str, Any]							     =      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":
																		UpperCamelCase__:       Dict							     =      input("Please enter the string to be encrypted: ")
																		UpperCamelCase__:       List[str]							     =      int(input("Please enter off-set: ").strip())

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

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

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

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










'''simple docstring'''






UpperCamelCase__:       str							     =      [0.485, 0.456, 0.406]
UpperCamelCase__:       List[str]							     =      [0.229, 0.224, 0.225]
UpperCamelCase__:       List[str]							     =      [0.5, 0.5, 0.5]
UpperCamelCase__:       Optional[Any]							     =      [0.5, 0.5, 0.5]
UpperCamelCase__:       List[str]							     =      [0.48145466, 0.4578275, 0.40821073]
UpperCamelCase__:       List[str]							     =      [0.26862954, 0.26130258, 0.27577711]





