



"""simple docstring"""


from __future__ import annotations

from string import ascii_letters

def 				_lowerCAmelCase   (     lowercase_	,			lowercase_	,			lowercase_ = None		):
						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(lowercase_		) + key) % len(lowercase_		)

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

						return result

def 				_lowerCAmelCase   (     lowercase_	,			lowercase_	,			lowercase_ = None		):
						key *= -1

						return encrypt(lowercase_	,			lowercase_	,			lowercase_		)

def 				_lowerCAmelCase   (     lowercase_	,			lowercase_ = None		):
						UpperCAmelCase    =				alphabet or ascii_letters

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

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

						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
								snake_case_         = 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":
												snake_case_         = input("""Please enter the string to be encrypted: """)
												snake_case_         = int(input("""Please enter off-set: """).strip())

												print(encrypt(input_string, key))
								elif choice == "2":
												snake_case_         = input("""Please enter the string to be decrypted: """)
												snake_case_         = int(input("""Please enter off-set: """).strip())

												print(decrypt(input_string, key))
								elif choice == "3":
												snake_case_         = input("""Please enter the string to be decrypted: """)
												snake_case_         = 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"""


def 				_lowerCAmelCase   (     lowercase_	,			lowercase_		):
						UpperCAmelCase    =				1.0
						for i in range(1	,			r + 1		):
												ret *= (n + 1 - i) / i
						return round(lowercase_		)

def 				_lowerCAmelCase   (     lowercase_		):
						return choose(8 + n	,			lowercase_		) + choose(9 + n	,			lowercase_		) - 10

def 				_lowerCAmelCase   (     lowercase_		):
						return sum(non_bouncy_exact(lowercase_		) for i in range(1	,			n + 1		)		)

def 				_lowerCAmelCase   (     lowercase_ = 100		):
						return non_bouncy_upto(lowercase_		)


if __name__ == "__main__":
				print(f'''{solution() = }''')





