






import os

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







def      snake_case		(							):
				A	 =      os.path.dirname(os.path.realpath(UpperCAmelCase   )   )
				A	 =      os.path.join(UpperCAmelCase,						'words.txt'   )

				A	 =      ''
				with open(UpperCAmelCase   ) as f:
								A	 =      f.readline()

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


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













from collections import deque

from .hash_table import HashTable
class      UpperCamelCase (				snake_case__ ):







		"""simple docstring"""



		def __init__(  self		:       Any						,*_SCREAMING_SNAKE_CASE		:       Optional[int]						,**_SCREAMING_SNAKE_CASE		:       Optional[Any]		)    ->   int:


						'''simple docstring'''
						super().__init__(*_SCREAMING_SNAKE_CASE						,**_SCREAMING_SNAKE_CASE		)
		def       A(  self		:       Optional[int]						,_SCREAMING_SNAKE_CASE		:       Optional[Any]						,_SCREAMING_SNAKE_CASE		:       Tuple		)    ->   List[str]:


						'''simple docstring'''
						A	 =      deque([]		) if self.values[key] is None else self.values[key]
						self.values[key].appendleft(_SCREAMING_SNAKE_CASE		)
						A	 =      self.values[key]
		def       A(  self		:       Optional[Any]		)    ->   Union[str, Any]:


						'''simple docstring'''
						return (
						    sum(self.charge_factor - len(_SCREAMING_SNAKE_CASE		) for slot in self.values		)
						    / self.size_table
						    * self.charge_factor
						)







		def       A(  self		:       Dict						,_SCREAMING_SNAKE_CASE		:       Optional[int]						,_SCREAMING_SNAKE_CASE		:       str=None		)    ->   Union[str, Any]:


						'''simple docstring'''
						if not (
						    len(self.values[key]		) == self.charge_factor and self.values.count(_SCREAMING_SNAKE_CASE		) == 0
						):
										return key
						return super()._collision_resolution(_SCREAMING_SNAKE_CASE						,_SCREAMING_SNAKE_CASE		)





