

import math







def      snake_case__							(  lowerCAmelCase_     ):





     """simple docstring"""







     if n <= 0:
          raise ValueError('Only positive integers have prime factors'     )
     SCREAMING_SNAKE_CASE 		=[]
     while n % 2 == 0:
          pf.append(2     )
          SCREAMING_SNAKE_CASE 		=int(n / 2     )
     for i in range(3,       int(math.sqrt(lowerCAmelCase_     )     ) + 1,       2     ):
          while n % i == 0:
               pf.append(lowerCAmelCase_     )
               SCREAMING_SNAKE_CASE 		=int(n / i     )
     if n > 2:
          pf.append(lowerCAmelCase_     )
     return pf







def      snake_case__							(  lowerCAmelCase_     ):





     """simple docstring"""







     if n <= 0:
          raise ValueError('Only positive numbers are accepted'     )
     SCREAMING_SNAKE_CASE 		=1
     SCREAMING_SNAKE_CASE 		=1
     while n % 2 == 0:
          temp += 1
          SCREAMING_SNAKE_CASE 		=int(n / 2     )
     div *= temp
     for i in range(3,       int(math.sqrt(lowerCAmelCase_     )     ) + 1,       2     ):
          SCREAMING_SNAKE_CASE 		=1
          while n % i == 0:
               temp += 1
               SCREAMING_SNAKE_CASE 		=int(n / i     )
          div *= temp
     if n > 1:
          div *= 2
     return div







def      snake_case__							(  lowerCAmelCase_     ):





     """simple docstring"""







     if n <= 0:
          raise ValueError('Only positive numbers are accepted'     )
     SCREAMING_SNAKE_CASE 		=1
     SCREAMING_SNAKE_CASE 		=1
     while n % 2 == 0:
          temp += 1
          SCREAMING_SNAKE_CASE 		=int(n / 2     )
     if temp > 1:
          s *= (2**temp - 1) / (2 - 1)
     for i in range(3,       int(math.sqrt(lowerCAmelCase_     )     ) + 1,       2     ):
          SCREAMING_SNAKE_CASE 		=1
          while n % i == 0:
               temp += 1
               SCREAMING_SNAKE_CASE 		=int(n / i     )
          if temp > 1:
               s *= (i**temp - 1) / (i - 1)
     return int(lowerCAmelCase_     )







def      snake_case__							(  lowerCAmelCase_     ):





     """simple docstring"""







     SCREAMING_SNAKE_CASE 		=n
     for x in set(prime_factors(lowerCAmelCase_     )     ):
          s *= (x - 1) / x
     return int(lowerCAmelCase_     )


if __name__ == "__main__":
 import doctest

 doctest.testmod()




def      snake_case__							(  lowerCAmelCase_,       lowerCAmelCase_     ):





     """simple docstring"""







     if not isinstance(lowerCAmelCase_,       lowerCAmelCase_     ):
          raise TypeError('plaintext must be a string'     )
     if not isinstance(lowerCAmelCase_,       lowerCAmelCase_     ):
          raise TypeError('key must be a string'     )

     if not plaintext:
          raise ValueError('plaintext is empty'     )
     if not key:
          raise ValueError('key is empty'     )

     key += plaintext
     SCREAMING_SNAKE_CASE 		=plaintext.lower()
     SCREAMING_SNAKE_CASE 		=key.lower()
     SCREAMING_SNAKE_CASE 		=0
     SCREAMING_SNAKE_CASE 		=0
     SCREAMING_SNAKE_CASE 		=''
     while plaintext_iterator < len(lowerCAmelCase_     ):
          if (
              ord(plaintext[plaintext_iterator]     ) < 97
              or ord(plaintext[plaintext_iterator]     ) > 122
          ):
               ciphertext += plaintext[plaintext_iterator]
               plaintext_iterator += 1
          elif ord(key[key_iterator]     ) < 97 or ord(key[key_iterator]     ) > 122:
               key_iterator += 1
          else:
               ciphertext += chr(
                   (
                       (ord(plaintext[plaintext_iterator]     ) - 97 + ord(key[key_iterator]     ))
                       - 97
                   )
                   % 26
                   + 97     )
               key_iterator += 1
               plaintext_iterator += 1
     return ciphertext







def      snake_case__							(  lowerCAmelCase_,       lowerCAmelCase_     ):





     """simple docstring"""







     if not isinstance(lowerCAmelCase_,       lowerCAmelCase_     ):
          raise TypeError('ciphertext must be a string'     )
     if not isinstance(lowerCAmelCase_,       lowerCAmelCase_     ):
          raise TypeError('key must be a string'     )

     if not ciphertext:
          raise ValueError('ciphertext is empty'     )
     if not key:
          raise ValueError('key is empty'     )

     SCREAMING_SNAKE_CASE 		=key.lower()
     SCREAMING_SNAKE_CASE 		=0
     SCREAMING_SNAKE_CASE 		=0
     SCREAMING_SNAKE_CASE 		=''
     while ciphertext_iterator < len(lowerCAmelCase_     ):
          if (
              ord(ciphertext[ciphertext_iterator]     ) < 97
              or ord(ciphertext[ciphertext_iterator]     ) > 122
          ):
               plaintext += ciphertext[ciphertext_iterator]
          else:
               plaintext += chr(
                   (ord(ciphertext[ciphertext_iterator]     ) - ord(key[key_iterator]     )) % 26
                   + 97     )
               key += chr(
                   (ord(ciphertext[ciphertext_iterator]     ) - ord(key[key_iterator]     )) % 26
                   + 97     )
               key_iterator += 1
          ciphertext_iterator += 1
     return plaintext


if __name__ == "__main__":
 import doctest

 doctest.testmod()
 _lowerCamelCase							=int(input("Type 1 to encrypt or 2 to decrypt:"))
 if operation == 1:
  _lowerCamelCase							=input("Typeplaintext to be encrypted:\n")
  _lowerCamelCase							=input("Type the key:\n")
  print(encrypt(plaintext, key))
 elif operation == 2:
  _lowerCamelCase							=input("Type the ciphertext to be decrypted:\n")
  _lowerCamelCase							=input("Type the key:\n")
  print(decrypt(ciphertext, key))
 decrypt("jsqqs avvwo", "coffee")

