




"""simple docstring"""




from timeit import timeit

lowerCAmelCase				:     Optional[Any]					=				{
    """MALAYALAM""": True,
    """String""": False,
    """rotor""": True,
    """level""": True,
    """A""": True,
    """BB""": True,
    """ABC""": False,
    """amanaplanacanalpanama""": True,  # "a man a plan a canal panama"
}
# Ensure our test data is valid
assert all((key == key[::-1]) is value for key, value in test_data.items())



def        a__					(							snake_case__							)		->   bool:
			lowerCamelCase      =   0
			lowerCamelCase      =   len(snake_case__							) - 1
			while start_i < end_i:
						if s[start_i] == s[end_i]:
									start_i += 1
									end_i -= 1
						else:
									return False
			return True



def        a__					(							snake_case__							)		->   bool:
			lowerCamelCase      =   len(snake_case__							) // 2
			lowerCamelCase      =   len(snake_case__							)

			# We need to traverse till half of the length of string
			# as we can get access of the i'th last element from
			# i'th index.
			# eg: [0,1,2,3,4,5] => 4th index can be accessed
			# with the help of 1st index (i==n-i-1)
			# where n is length of string
			return all(s[i] == s[n - i - 1] for i in range(snake_case__							)							)



def        a__					(							snake_case__							)		->   bool:
			if len(snake_case__							) <= 2:
						return True
			if s[0] == s[len(snake_case__							) - 1]:
						return is_palindrome_recursive(s[1:-1]							)
			else:
						return False



def        a__					(							snake_case__							)		->   bool:
			return s == s[::-1]



def        a__					(							snake_case__							)		->   None:
			lowerCamelCase      =   F'all({name}(key) is value for key, value in test_data.items())'
			lowerCamelCase      =   F'from __main__ import test_data, {name}'
			lowerCamelCase      =   50_00_00
			lowerCamelCase      =   timeit(stmt=snake_case__			,					setup=snake_case__			,					number=snake_case__							)
			print(F'{name:<35} finished {number:,} runs in {result:.5f} seconds'							)


if __name__ == "__main__":
					for key, value in test_data.items():
										assert is_palindrome(key) is is_palindrome_recursive(key)
										assert is_palindrome(key) is is_palindrome_slice(key)
										print(F"""{key:21} {value}""")
					print("""a man a plan a canal panama""")

					# finished 500,000 runs in 0.46793 seconds
					benchmark_function("""is_palindrome_slice""")
					# finished 500,000 runs in 0.85234 seconds
					benchmark_function("""is_palindrome""")
					# finished 500,000 runs in 1.32028 seconds
					benchmark_function("""is_palindrome_recursive""")
					# finished 500,000 runs in 2.08679 seconds
					benchmark_function("""is_palindrome_traversal""")









"""simple docstring"""




def        a__					(							snake_case__ = 10_00							)		->   int:
			lowerCamelCase ,  lowerCamelCase      =   1, 1
			lowerCamelCase      =   2
			while True:
						lowerCamelCase      =   0
						lowerCamelCase      =   fa + fa
						lowerCamelCase ,  lowerCamelCase      =   fa, f
						index += 1
						for _ in str(snake_case__							):
									i += 1
						if i == n:
									break
			return index


if __name__ == "__main__":
					print(solution(int(str(input()).strip())))



