





def 		_SCREAMING_SNAKE_CASE     ( lowerCAmelCase__							,lowerCAmelCase__							,lowerCAmelCase__							,lowerCAmelCase__						):
		lowerCamelCase_						,      lowerCamelCase_	:     Optional[Any] 						=      len(lowerCAmelCase__						), len(grid[0]						)
		if (
		    min(lowerCAmelCase__							,lowerCAmelCase__						) < 0
		    or row == row_length
		    or col == col_length
		    or (row, col) in visit
		    or grid[row][col] == 1
		):
				return 0
		if row == row_length - 1 and col == col_length - 1:
				return 1

		visit.add((row, col)						)

		lowerCamelCase_	:     Any 						=      0
		count += depth_first_search(lowerCAmelCase__							,row + 1							,lowerCAmelCase__							,lowerCAmelCase__						)
		count += depth_first_search(lowerCAmelCase__							,row - 1							,lowerCAmelCase__							,lowerCAmelCase__						)
		count += depth_first_search(lowerCAmelCase__							,lowerCAmelCase__							,col + 1							,lowerCAmelCase__						)
		count += depth_first_search(lowerCAmelCase__							,lowerCAmelCase__							,col - 1							,lowerCAmelCase__						)

		visit.remove((row, col)						)
		return count


if __name__ == "__main__":
		import doctest

		doctest.testmod()







_lowercase		:  Any			       =[0, 2, 4, 6, 8]
_lowercase		:  List[Any]			       =[1, 3, 5, 7, 9]


def 		_SCREAMING_SNAKE_CASE     ( lowerCAmelCase__							,lowerCAmelCase__							,lowerCAmelCase__							,lowerCAmelCase__						):
		if remaining_length == 0:
				if digits[0] == 0 or digits[-1] == 0:
						return 0

				for i in range(length // 2 - 1							,-1							,-1						):
						remainder += digits[i] + digits[length - i - 1]

						if remainder % 2 == 0:
								return 0

						remainder //= 10

				return 1

		if remaining_length == 1:
				if remainder % 2 == 0:
						return 0

				lowerCamelCase_	:     Dict 						=      0
				for digit in range(10						):
						lowerCamelCase_	:     List[Any] 						=      digit
						result += reversible_numbers(
						    0							,(remainder + 2 * digit) // 10							,lowerCAmelCase__							,lowerCAmelCase__						)
				return result

		lowerCamelCase_	:     List[str] 						=      0
		for digita in range(10						):
				lowerCamelCase_	:     Tuple 						=      digita

				if (remainder + digita) % 2 == 0:
						lowerCamelCase_	:     Dict 						=      ODD_DIGITS
				else:
						lowerCamelCase_	:     str 						=      EVEN_DIGITS

				for digita in other_parity_digits:
						lowerCamelCase_	:     Optional[int] 						=      digita
						result += reversible_numbers(
						    remaining_length - 2							,(remainder + digita + digita) // 10							,lowerCAmelCase__							,lowerCAmelCase__							,)
		return result


def 		_SCREAMING_SNAKE_CASE     ( lowerCAmelCase__ = 9						):
		lowerCamelCase_	:     int 						=      0
		for length in range(1							,max_power + 1						):
				result += reversible_numbers(lowerCAmelCase__							,0							,[0] * length							,lowerCAmelCase__						)
		return result


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