



"""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 			snake_case_    ( A_   :						str		):


       '''simple docstring'''





       _lowerCamelCase		:							Union[str, Any]            =					0
       _lowerCamelCase		:							Any            =					len(SCREAMING_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 			snake_case_    ( A_   :						str		):


       '''simple docstring'''





       _lowerCamelCase		:							List[str]            =					len(SCREAMING_SNAKE_CASE_		) // 2
       _lowerCamelCase		:							int            =					len(SCREAMING_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(SCREAMING_SNAKE_CASE_		)		)






def 			snake_case_    ( A_   :						str		):


       '''simple docstring'''





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






def 			snake_case_    ( A_   :						str		):


       '''simple docstring'''





       return s == s[::-1]






def 			snake_case_    ( A_   :						str		):


       '''simple docstring'''





       _lowerCamelCase		:							List[str]            =					F'''all({name}(key) is value for key, value in test_data.items())'''
       _lowerCamelCase		:							Optional[int]            =					F'''from __main__ import test_data, {name}'''
       _lowerCamelCase		:							Optional[Any]            =					50_00_00
       _lowerCamelCase		:							List[Any]            =					timeit(stmt=SCREAMING_SNAKE_CASE_,							setup=SCREAMING_SNAKE_CASE_,							number=SCREAMING_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''')




import os

# Precomputes a list of the 100 first triangular numbers
A		: List[Any]								=     [int(0.5 * n * (n + 1)) for n in range(1, 101)]




def 	UpperCamelCase__  (     )  ->     str:
						_lowercase					       =					os.path.dirname(os.path.realpath(SCREAMING_SNAKE_CASE_       )       )
						_lowercase					       =					os.path.join(SCREAMING_SNAKE_CASE_		,   """words.txt"""       )

						_lowercase					       =					""""""
						with open(SCREAMING_SNAKE_CASE_       ) as f:
												_lowercase					       =					f.readline()

						_lowercase					       =					[word.strip("""\""""       ) for word in words.strip("""\r\n"""       ).split(""","""       )]
						_lowercase					       =					[
						    word
						    for word in [sum(ord(SCREAMING_SNAKE_CASE_       ) - 64 for x in word       ) for word in words]
						    if word in TRIANGULAR_NUMBERS
						]
						return len(SCREAMING_SNAKE_CASE_       )


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