





"""simple docstring"""





from __future__ import annotations

lowerCAmelCase__     			=			list[list[int]]

# assigning initial values to the grid
lowerCAmelCase__     			=			[
    [3, 0, 6, 5, 0, 8, 4, 0, 0],
    [5, 2, 0, 0, 0, 0, 0, 0, 0],
    [0, 8, 7, 0, 0, 0, 0, 3, 1],
    [0, 0, 3, 0, 1, 0, 0, 8, 0],
    [9, 0, 0, 8, 6, 3, 0, 0, 5],
    [0, 5, 0, 0, 9, 0, 6, 0, 0],
    [1, 3, 0, 0, 0, 0, 2, 5, 0],
    [0, 0, 0, 0, 0, 0, 0, 7, 4],
    [0, 0, 5, 2, 0, 6, 3, 0, 0],
]

# a grid with no solution
lowerCAmelCase__     			=			[
    [5, 0, 6, 5, 0, 8, 4, 0, 3],
    [5, 2, 0, 0, 0, 0, 0, 0, 2],
    [1, 8, 7, 0, 0, 0, 0, 3, 1],
    [0, 0, 3, 0, 1, 0, 0, 8, 0],
    [9, 0, 0, 8, 6, 3, 0, 0, 5],
    [0, 5, 0, 0, 9, 0, 6, 0, 0],
    [1, 3, 0, 0, 0, 0, 2, 5, 0],
    [0, 0, 0, 0, 0, 0, 0, 7, 4],
    [0, 0, 5, 2, 0, 6, 3, 0, 0],
]


def       a__					(					_SCREAMING_SNAKE_CASE  ,	_SCREAMING_SNAKE_CASE  ,	_SCREAMING_SNAKE_CASE  ,	_SCREAMING_SNAKE_CASE    ):




		"""simple docstring"""


		for i in range(9    ):
				if grid[row][i] == n or grid[i][column] == n:
						return False

		for i in range(3    ):
				for j in range(3    ):
						if grid[(row - row % 3) + i][(column - column % 3) + j] == n:
								return False

		return True


def       a__					(					_SCREAMING_SNAKE_CASE    ):




		"""simple docstring"""


		for i in range(9    ):
				for j in range(9    ):
						if grid[i][j] == 0:
								return i, j
		return None


def       a__					(					_SCREAMING_SNAKE_CASE    ):




		"""simple docstring"""


		if location := find_empty_location(__SCREAMING_SNAKE_CASE    ):
				UpperCamelCase   ,				UpperCamelCase   =	location
		else:
				# If the location is ``None``, then the grid is solved.
				return grid

		for digit in range(1  ,	10    ):
				if is_safe(__SCREAMING_SNAKE_CASE  ,	__SCREAMING_SNAKE_CASE  ,	__SCREAMING_SNAKE_CASE  ,	__SCREAMING_SNAKE_CASE    ):
						UpperCamelCase   =	digit

						if sudoku(__SCREAMING_SNAKE_CASE    ) is not None:
								return grid

						UpperCamelCase   =	0

		return None


def       a__					(					_SCREAMING_SNAKE_CASE    ):




		"""simple docstring"""


		for row in grid:
				for cell in row:
						print(__SCREAMING_SNAKE_CASE  ,	end=" "    )
				print()


if __name__ == "__main__":
						# make a copy of grid so that you can compare with the unmodified grid
						for example_grid in (initial_grid, no_solution):
												print('''\nExample grid:\n''' + '''=''' * 20)
												print_solution(example_grid)
												print('''\nExample grid solution:''')
												lowerCAmelCase__     			=			sudoku(example_grid)
												if solution is not None:
																		print_solution(solution)
												else:
																		print('''Cannot find a solution.''')













"""simple docstring"""





import string


def       a__					(					_SCREAMING_SNAKE_CASE    ):




		"""simple docstring"""


		for key in range(len(string.ascii_uppercase    )    ):
				UpperCamelCase   =	""
				for symbol in message:
						if symbol in string.ascii_uppercase:
								UpperCamelCase   =	string.ascii_uppercase.find(_SCREAMING_SNAKE_CASE    )
								UpperCamelCase   =	num - key
								if num < 0:
										UpperCamelCase   =	num + len(string.ascii_uppercase    )
								UpperCamelCase   =	translated + string.ascii_uppercase[num]
						else:
								UpperCamelCase   =	translated + symbol
				print(F"Decryption using Key #{key}: {translated}"    )


def       a__					(					):




		"""simple docstring"""


		UpperCamelCase   =	input("Encrypted message: "    )
		UpperCamelCase   =	message.upper()
		decrypt(_SCREAMING_SNAKE_CASE    )


if __name__ == "__main__":
						import doctest

						doctest.testmod()
						main()






