


'''simple docstring'''


from timeit import timeit

lowerCamelCase__    	=     {
    '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  __lowerCAmelCase (__lowerCAmelCase   ):
		_UpperCAmelCase		:       List[str]								=      0
		_UpperCAmelCase		:       List[str]								=      len(__lowerCAmelCase   ) - 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  __lowerCAmelCase (__lowerCAmelCase   ):
		_UpperCAmelCase		:       Union[str, Any]								=      len(__lowerCAmelCase   ) // 2
		_UpperCAmelCase		:       Optional[Any]								=      len(__lowerCAmelCase   )

		# 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(__lowerCAmelCase   )   )






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






def  __lowerCAmelCase (__lowerCAmelCase   ):
		return s == s[::-1]






def  __lowerCAmelCase (__lowerCAmelCase   ):
		_UpperCAmelCase		:       Optional[int]								=      F"""all({name}(key) is value for key, value in test_data.items())"""
		_UpperCAmelCase		:       List[Any]								=      F"""from __main__ import test_data, {name}"""
		_UpperCAmelCase		:       Optional[Any]								=      500_000
		_UpperCAmelCase		:       Dict								=      timeit(stmt=__lowerCAmelCase      , setup=__lowerCAmelCase      , number=__lowerCAmelCase   )
		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'''


import os






def  __lowerCAmelCase ():
		_UpperCAmelCase		:       List[Any]								=      os.path.join(os.path.dirname(__lowerCAmelCase   )      , "num.txt"   )
		with open(__lowerCAmelCase   ) as file_hand:
				return str(sum(int(__lowerCAmelCase   ) for line in file_hand   )   )[:10]


if __name__ == "__main__":
						print(solution())



