



"""simple docstring"""







def  __SCREAMING_SNAKE_CASE (  __UpperCAmelCase   ,				__UpperCAmelCase      ):
		if not isinstance(__UpperCAmelCase   ,				__UpperCAmelCase      ):
				raise TypeError("""plaintext must be a string"""      )
		if not isinstance(__UpperCAmelCase   ,				__UpperCAmelCase      ):
				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
		_lowercase				: List[str]     =   plaintext.lower()
		_lowercase				: str     =   key.lower()
		_lowercase				: Any     =   0
		_lowercase				: int     =   0
		_lowercase				: Any     =   """"""
		while plaintext_iterator < len(__UpperCAmelCase      ):
				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  __SCREAMING_SNAKE_CASE (  __UpperCAmelCase   ,				__UpperCAmelCase      ):
		if not isinstance(__UpperCAmelCase   ,				__UpperCAmelCase      ):
				raise TypeError("""ciphertext must be a string"""      )
		if not isinstance(__UpperCAmelCase   ,				__UpperCAmelCase      ):
				raise TypeError("""key must be a string"""      )

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

		_lowercase				: Dict     =   key.lower()
		_lowercase				: str     =   0
		_lowercase				: Dict     =   0
		_lowercase				: Optional[Any]     =   """"""
		while ciphertext_iterator < len(__UpperCAmelCase      ):
				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()
		UpperCAmelCase:  Any			     =				int(input("""Type 1 to encrypt or 2 to decrypt:"""))
		if operation == 1:
				UpperCAmelCase:  Any			     =				input("""Typeplaintext to be encrypted:\n""")
				UpperCAmelCase:  Dict			     =				input("""Type the key:\n""")
				print(encrypt(plaintext, key))
		elif operation == 2:
				UpperCAmelCase:  List[str]			     =				input("""Type the ciphertext to be decrypted:\n""")
				UpperCAmelCase:  Any			     =				input("""Type the key:\n""")
				print(decrypt(ciphertext, key))
		decrypt("""jsqqs avvwo""", """coffee""")





'''simple docstring'''
A__ :		dict[str, float]					={
    "kilogram": 1,
    "gram": pow(10, 3),
    "milligram": pow(10, 6),
    "metric-ton": pow(10, -3),
    "long-ton": 0.0_0_0_9_8_4_2_0_7_3,
    "short-ton": 0.0_0_1_1_0_2_3_1_2_2,
    "pound": 2.2_0_4_6_2_4_4_2_0_2,
    "stone": 0.1_5_7_4_7_3_1_7_2_8,
    "ounce": 3_5.2_7_3_9_9_0_7_2_3,
    "carrat": 5_000,
    "atomic-mass-unit": 6.0_2_2_1_3_6_6_5_2E2_6,
}

A__ :		dict[str, float]					={
    "kilogram": 1,
    "gram": pow(10, -3),
    "milligram": pow(10, -6),
    "metric-ton": pow(10, 3),
    "long-ton": 1_0_1_6.0_4_6_0_8,
    "short-ton": 9_0_7.1_8_4,
    "pound": 0.4_5_3_5_9_2,
    "stone": 6.3_5_0_2_9,
    "ounce": 0.0_2_8_3_4_9_5,
    "carrat": 0.0_0_0_2,
    "atomic-mass-unit": 1.6_6_0_5_4_0_1_9_9E-2_7,
}







def 							A_  (    __SCREAMING_SNAKE_CASE    :	str      ,  __SCREAMING_SNAKE_CASE    :	str      ,  __SCREAMING_SNAKE_CASE    :	float			)					->							float:





  """simple docstring"""

  if to_type not in KILOGRAM_CHART or from_type not in WEIGHT_TYPE_CHART:
    __A		:  Tuple       				=		(
        F"Invalid 'from_type' or 'to_type' value: {from_type!r}, {to_type!r}\n"
        F"Supported values are: {', '.join(__SCREAMING_SNAKE_CASE			)}"
    )
    raise ValueError(__SCREAMING_SNAKE_CASE			)
  return value * KILOGRAM_CHART[to_type] * WEIGHT_TYPE_CHART[from_type]


if __name__ == "__main__":
     import doctest

     doctest.testmod()



