'''simple docstring'''




from __future__ import annotations

from string import ascii_letters





def      _UpperCAmelCase    (							_UpperCamelCase    :	str,   _UpperCamelCase    :	int,   _UpperCamelCase    :	str | None = None   )	->      str:
    A_     =   alphabet or ascii_letters

    # The final result string
    A_     =   ''''''

    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
            A_     =   (alpha.index(_UpperCamelCase   ) + key) % len(_UpperCamelCase   )

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

    return result





def      _UpperCAmelCase    (							_UpperCamelCase    :	str,   _UpperCamelCase    :	int,   _UpperCamelCase    :	str | None = None   )	->      str:
    key *= -1

    return encrypt(_UpperCamelCase,   _UpperCamelCase,   _UpperCamelCase   )





def      _UpperCAmelCase    (							_UpperCamelCase    :	str,   _UpperCamelCase    :	str | None = None   )	->      dict[int, str]:
    A_     =   alphabet or ascii_letters

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

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

    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   :      List[str]						    =  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   :      str						    =  input('Please enter the string to be encrypted: ')
      __snake_case   :      Optional[Any]						    =  int(input('Please enter off-set: ').strip())

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

      print(decrypt(input_string, key))
    elif choice == "3":
      __snake_case   :      Optional[Any]						    =  input('Please enter the string to be decrypted: ')
      __snake_case   :      str						    =  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'''




from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_sentencepiece_available, is_tokenizers_available


__snake_case   :      Optional[int]						    =  {}

try:
  if not is_sentencepiece_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  __snake_case   :      Optional[Any]						    =  ['MBart50Tokenizer']

try:
  if not is_tokenizers_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  __snake_case   :      Dict						    =  ['MBart50TokenizerFast']


if TYPE_CHECKING:
  try:
    if not is_sentencepiece_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .tokenization_mbartaa import MBartaaTokenizer

  try:
    if not is_tokenizers_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .tokenization_mbartaa_fast import MBartaaTokenizerFast

else:
  import sys

  __snake_case   :      Tuple						    =  _LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)






