from __future__ import annotations

def 	__lowerCamelCase							(				__a    : str      ,							__a    : dict[str, str]		)      ->       str:
	_lowercase   ,  _lowercase   ,  _lowercase   ="", "", ""
	_lowercase   =[]

	for character in message_part:
		tmp.append(character_to_number[character]		)

	for each in tmp:
		one += each[0]
		two += each[1]
		three += each[2]

	return one + two + three

def 	__lowerCamelCase							(				__a    : str      ,							__a    : dict[str, str]		)      ->       tuple[str, str, str]:
	_lowercase   ,  _lowercase   ="", ""
	_lowercase   =[]

	for character in message_part:
		this_part += character_to_number[character]

	for digit in this_part:
		tmp += digit
		if len(__a		) == len(__a		):
			result.append(__a		)
			_lowercase   =""

	return result[0], result[1], result[2]

def 	__lowerCamelCase							(				__a    : str      ,							__a    : str		)      ->       tuple[str, str, dict[str, str], dict[str, str]]:
	# Validate message and alphabet, set to upper and remove spaces
	_lowercase   =alphabet.replace(" "      ,							""		).upper()
	_lowercase   =message.replace(" "      ,							""		).upper()

	# Check length and characters
	if len(__a		) != 27:
		raise KeyError("Length of alphabet has to be 27."		)
	for each in message:
		if each not in alphabet:
			raise ValueError("Each message character has to be included in alphabet!"		)

    # Generate dictionares
	_lowercase   =(
	    "111",
	    "112",
	    "113",
	    "121",
	    "122",
	    "123",
	    "131",
	    "132",
	    "133",
	    "211",
	    "212",
	    "213",
	    "221",
	    "222",
	    "223",
	    "231",
	    "232",
	    "233",
	    "311",
	    "312",
	    "313",
	    "321",
	    "322",
	    "323",
	    "331",
	    "332",
	    "333",
	)
	_lowercase   ={}
	_lowercase   ={}
	for letter, number in zip(__a      ,							__a		):
		_lowercase   =number
		_lowercase   =letter

	return message, alphabet, character_to_number, number_to_character

def 	__lowerCamelCase							(				__a    : str      ,							__a    : str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ."      ,							__a    : int = 5		)      ->       str:
	_lowercase   ,  _lowercase   ,  _lowercase   ,  _lowercase   =__prepare(
	    __a      ,							__a		)
	_lowercase   ,  _lowercase   ="", ""

	for i in range(0      ,							len(__a		) + 1      ,							__a		):
		encrypted_numeric += __encrypt_part(
		    message[i : i + period]      ,							__a		)

	for i in range(0      ,							len(__a		)      ,							3		):
		encrypted += number_to_character[encrypted_numeric[i : i + 3]]

	return encrypted

def 	__lowerCamelCase							(				__a    : str      ,							__a    : str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ."      ,							__a    : int = 5		)      ->       str:
	_lowercase   ,  _lowercase   ,  _lowercase   ,  _lowercase   =__prepare(
	    __a      ,							__a		)
	_lowercase   =[]
	_lowercase   =""

	for i in range(0      ,							len(__a		) + 1      ,							__a		):
		_lowercase   ,  _lowercase   ,  _lowercase   =__decrypt_part(message[i : i + period]      ,							__a		)

		for j in range(0      ,							len(__a		)		):
			decrypted_numeric.append(a[j] + b[j] + c[j]		)

	for each in decrypted_numeric:
		decrypted += number_to_character[each]

	return decrypted


if __name__ == "__main__":
						lowerCAmelCase__  	=      "DEFEND THE EAST WALL OF THE CASTLE."
						lowerCAmelCase__  	=      encrypt_message(msg, "EPSDUCVWYM.ZLKXNBTFGORIJHAQ")
						lowerCAmelCase__  	=      decrypt_message(encrypted, "EPSDUCVWYM.ZLKXNBTFGORIJHAQ")
						print(F'''Encrypted: {encrypted}\nDecrypted: {decrypted}''')





def 	__lowerCamelCase							(				)      ->       Dict:
	_lowercase   =1

	while True:
		if (
		    sorted(str(__a		)		)
		    == sorted(str(2 * i		)		)
		    == sorted(str(3 * i		)		)
		    == sorted(str(4 * i		)		)
		    == sorted(str(5 * i		)		)
		    == sorted(str(6 * i		)		)
		):
			return i

		i += 1


if __name__ == "__main__":
						print(solution())




