

def 			A_      (    _UpperCAmelCase				,	_UpperCAmelCase    ):
						SCREAMING_SNAKE_CASE_: Any  		=       ""
						for i in table:
												res += inp[i - 1]
						return res







def 			A_      (    _UpperCAmelCase    ):
						return data[1:] + data[0]







def 			A_      (    _UpperCAmelCase				,	_UpperCAmelCase    ):
						SCREAMING_SNAKE_CASE_: Optional[Any]  		=       ""
						for i in range(len(_UpperCAmelCase    )    ):
												if a[i] == b[i]:
																		res += "0"
												else:
																		res += "1"
						return res







def 			A_      (    _UpperCAmelCase				,	_UpperCAmelCase    ):
						SCREAMING_SNAKE_CASE_: Dict  		=       int("0b" + data[0] + data[-1]				,	2    )
						SCREAMING_SNAKE_CASE_: List[str]  		=       int("0b" + data[1:3]				,	2    )
						return bin(s[row][col]    )[2:]







def 			A_      (    _UpperCAmelCase				,	_UpperCAmelCase				,	_UpperCAmelCase				,	_UpperCAmelCase				,	_UpperCAmelCase    ):
						SCREAMING_SNAKE_CASE_: Optional[Any]  		=       message[:4]
						SCREAMING_SNAKE_CASE_: int  		=       message[4:]
						SCREAMING_SNAKE_CASE_: Any  		=       apply_table(_UpperCAmelCase				,	_UpperCAmelCase    )
						SCREAMING_SNAKE_CASE_: List[Any]  		=       xor(_UpperCAmelCase				,	_UpperCAmelCase    )
						SCREAMING_SNAKE_CASE_: Any  		=       apply_sbox(_UpperCAmelCase				,	temp[:4]    )  # noqa: E741
						SCREAMING_SNAKE_CASE_: Any  		=       apply_sbox(_UpperCAmelCase				,	temp[4:]    )
						SCREAMING_SNAKE_CASE_: str  		=       "0" * (2 - len(_UpperCAmelCase    )) + l  # noqa: E741
						SCREAMING_SNAKE_CASE_: Union[str, Any]  		=       "0" * (2 - len(_UpperCAmelCase    )) + r
						SCREAMING_SNAKE_CASE_: Any  		=       apply_table(l + r				,	_UpperCAmelCase    )
						SCREAMING_SNAKE_CASE_: List[Any]  		=       xor(_UpperCAmelCase				,	_UpperCAmelCase    )
						return temp + right


if __name__ == "__main__":
						lowerCAmelCase							:  List[Any]   	=						input("""Enter 10 bit key: """)
						lowerCAmelCase							:  List[str]   	=						input("""Enter 8 bit message: """)

						lowerCAmelCase							:  Any   	=						[6, 3, 7, 4, 8, 5, 10, 9]
						lowerCAmelCase							:  Optional[Any]   	=						[3, 5, 2, 7, 4, 10, 1, 9, 8, 6]
						lowerCAmelCase							:  int   	=						[2, 4, 3, 1]
						lowerCAmelCase							:  Dict   	=						[2, 6, 3, 1, 4, 8, 5, 7]
						lowerCAmelCase							:  Dict   	=						[4, 1, 3, 5, 7, 2, 8, 6]
						lowerCAmelCase							:  Dict   	=						[4, 1, 2, 3, 2, 3, 4, 1]
						lowerCAmelCase							:  Union[str, Any]   	=						[[1, 0, 3, 2], [3, 2, 1, 0], [0, 2, 1, 3], [3, 1, 3, 2]]
						lowerCAmelCase							:  Dict   	=						[[0, 1, 2, 3], [2, 0, 1, 3], [3, 0, 1, 0], [2, 1, 0, 3]]

						# key generation
						lowerCAmelCase							:  Optional[int]   	=						apply_table(key, paa_table)
						lowerCAmelCase							:  Dict   	=						temp[:5]
						lowerCAmelCase							:  Optional[Any]   	=						temp[5:]
						lowerCAmelCase							:  Union[str, Any]   	=						left_shift(left)
						lowerCAmelCase							:  str   	=						left_shift(right)
						lowerCAmelCase							:  str   	=						apply_table(left + right, pa_table)
						lowerCAmelCase							:  int   	=						left_shift(left)
						lowerCAmelCase							:  int   	=						left_shift(right)
						lowerCAmelCase							:  List[Any]   	=						left_shift(left)
						lowerCAmelCase							:  Dict   	=						left_shift(right)
						lowerCAmelCase							:  Union[str, Any]   	=						apply_table(left + right, pa_table)

						# encryption
						lowerCAmelCase							:  Tuple   	=						apply_table(message, IP)
						lowerCAmelCase							:  Optional[int]   	=						function(expansion, sa, sa, keya, temp)
						lowerCAmelCase							:  List[Any]   	=						temp[4:] + temp[:4]
						lowerCAmelCase							:  int   	=						function(expansion, sa, sa, keya, temp)
						lowerCAmelCase							:  int   	=						apply_table(temp, IP_inv)
						print("""Cipher text is:""", CT)

						# decryption
						lowerCAmelCase							:  int   	=						apply_table(CT, IP)
						lowerCAmelCase							:  Optional[int]   	=						function(expansion, sa, sa, keya, temp)
						lowerCAmelCase							:  Dict   	=						temp[4:] + temp[:4]
						lowerCAmelCase							:  Optional[Any]   	=						function(expansion, sa, sa, keya, temp)
						lowerCAmelCase							:  Dict   	=						apply_table(temp, IP_inv)
						print("""Plain text after decypting is:""", PT)











'''simple docstring'''




from string import ascii_lowercase, ascii_uppercase



def 	a			( lowerCamelCase__    ):
			'''simple docstring'''





			if not sentence:
						return ""
			A_	:						Optional[int]	=     dict(zip(lowerCamelCase__						,      lowerCamelCase__    )    )
			return lower_to_upper.get(sentence[0]						,      sentence[0]    ) + sentence[1:]


if __name__ == "__main__":
						from doctest import testmod

						testmod()