



from __future__ import annotations



def 				_lowerCAmelCase      (_lowerCAmelCase):
					UpperCamelCase_											=				{1}
					UpperCamelCase_											=				[1]
					for _ in range(2				,		depth + 1):
										UpperCamelCase_											=				[*previous_coefficients, 0]
										UpperCamelCase_											=				[0, *previous_coefficients]
										UpperCamelCase_											=				[]
										for x, y in zip(_lowerCAmelCase				,		_lowerCAmelCase):
															coefficients.add(x + y)
															previous_coefficients.append(x + y)
					return coefficients



def 				_lowerCAmelCase      (_lowerCAmelCase):
					UpperCamelCase_											=				set()
					for number in unique_coefficients:
										UpperCamelCase_											=				2
										UpperCamelCase_											=				number
										while divisor**2 <= copy_number:
															UpperCamelCase_											=				0
															while copy_number % divisor == 0:
																				copy_number //= divisor
																				multiplicity += 1
															if multiplicity >= 2:
																				non_squarefrees.add(_lowerCAmelCase)
																				break
															divisor += 1

					return unique_coefficients.difference(_lowerCAmelCase)



def 				_lowerCAmelCase      (_lowerCAmelCase = 51):
					UpperCamelCase_											=				get_pascal_triangle_unique_coefficients(_lowerCAmelCase)
					UpperCamelCase_											=				get_squarefrees(_lowerCAmelCase)
					return sum(_lowerCAmelCase)


if __name__ == "__main__":
	print(F"{solution() = }")





from typing import Literal

UpperCAmelCase				:							Tuple								="""ABCDEFGHIJKLMNOPQRSTUVWXYZ"""



def 				_lowerCAmelCase      (_lowerCAmelCase				,		_lowerCAmelCase				,		_lowerCAmelCase):
					UpperCamelCase_											=				LETTERS if mode == "decrypt" else key
					UpperCamelCase_											=				key if mode == "decrypt" else LETTERS
					UpperCamelCase_											=				""
					# loop through each symbol in the message
					for symbol in message:
										if symbol.upper() in chars_a:
															# encrypt/decrypt the symbol
															UpperCamelCase_											=				chars_a.find(symbol.upper())
															if symbol.isupper():
																				translated += chars_b[sym_index].upper()
															else:
																				translated += chars_b[sym_index].lower()
										else:
															# symbol is not in LETTERS, just add it
															translated += symbol
					return translated



def 				_lowerCAmelCase      (_lowerCAmelCase				,		_lowerCAmelCase):
					return translate_message(_lowerCAmelCase				,		_lowerCAmelCase				,		"encrypt")



def 				_lowerCAmelCase      (_lowerCAmelCase				,		_lowerCAmelCase):
					return translate_message(_lowerCAmelCase				,		_lowerCAmelCase				,		"decrypt")



def 				_lowerCAmelCase      ():
					UpperCamelCase_											=				"Hello World"
					UpperCamelCase_											=				"QWERTYUIOPASDFGHJKLZXCVBNM"
					UpperCamelCase_											=				"decrypt"  # set to 'encrypt' or 'decrypt'

					if mode == "encrypt":
										UpperCamelCase_											=				encrypt_message(_lowerCAmelCase				,		_lowerCAmelCase)
					elif mode == "decrypt":
										UpperCamelCase_											=				decrypt_message(_lowerCAmelCase				,		_lowerCAmelCase)
					print(f"""Using the key {key}, the {mode}ed message is: {translated}""")


if __name__ == "__main__":
	import doctest

	doctest.testmod()
	main()
