




from __future__ import annotations

from string import ascii_letters

def   A   (   _SCREAMING_SNAKE_CASE				,_SCREAMING_SNAKE_CASE				,_SCREAMING_SNAKE_CASE = None					)			->				Union[str, Any]:
							lowerCamelCase     :   Tuple    				=      alphabet or ascii_letters

							# The final result string
							lowerCamelCase     :   Optional[Any]    				=      ""

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

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

							return result

def   A   (   _SCREAMING_SNAKE_CASE				,_SCREAMING_SNAKE_CASE				,_SCREAMING_SNAKE_CASE = None					)			->				str:
							key *= -1

							return encrypt(_SCREAMING_SNAKE_CASE				,_SCREAMING_SNAKE_CASE				,_SCREAMING_SNAKE_CASE					)

def   A   (   _SCREAMING_SNAKE_CASE				,_SCREAMING_SNAKE_CASE = None					)			->				int:
							lowerCamelCase     :   str    				=      alphabet or ascii_letters

							# To store data on all the combinations
							lowerCamelCase     :   Union[str, Any]    				=      {}

							# Cycle through each combination
							for key in range(1				,len(_SCREAMING_SNAKE_CASE					) + 1					):
														# Decrypt the message and store the result in the data
														lowerCamelCase     :   int    				=      decrypt(_SCREAMING_SNAKE_CASE				,_SCREAMING_SNAKE_CASE				,_SCREAMING_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
														SCREAMING_SNAKE_CASE__ :   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":
																					SCREAMING_SNAKE_CASE__ :   str						=     input('Please enter the string to be encrypted: ')
																					SCREAMING_SNAKE_CASE__ :   Any						=     int(input('Please enter off-set: ').strip())

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

																					print(decrypt(input_string, key))
														elif choice == "3":
																					SCREAMING_SNAKE_CASE__ :   List[Any]						=     input('Please enter the string to be decrypted: ')
																					SCREAMING_SNAKE_CASE__ :   int						=     brute_force(input_string)

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

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












from __future__ import annotations

def   A   (   _SCREAMING_SNAKE_CASE					)			->				list[int]:
       assert (
           isinstance(_SCREAMING_SNAKE_CASE				,_SCREAMING_SNAKE_CASE					) and mask > 0
       ), f'''mask needs to be positive integer, your input {mask}'''
       lowerCamelCase     :   str    				=      []
       lowerCamelCase     :   Any    				=      mask

       while submask:
              all_submasks.append(_SCREAMING_SNAKE_CASE					)
              lowerCamelCase     :   Union[str, Any]    				=      (submask - 1) & mask

       return all_submasks


if __name__ == "__main__":
       import doctest

       doctest.testmod()






