




import os

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





def 						__A						(      ) ->			Union[str, Any]:
	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())









"""simple docstring"""





def   a    (     __UpperCAmelCase      :    List[Any]  )    ->							str:
						__magic_name__:	Optional[int]							=       [0] * len(__UpperCAmelCase  )
						__magic_name__:	str							=       []
						__magic_name__:	Any							=       []
						__magic_name__:	Union[str, Any]							=       0

						for values in graph.values():
												for i in values:
																		indegree[i] += 1

						for i in range(len(__UpperCAmelCase  )  ):
												if indegree[i] == 0:
																		queue.append(__UpperCAmelCase  )

						while queue:
												__magic_name__:	Optional[Any]							=       queue.pop(0  )
												cnt += 1
												topo.append(__UpperCAmelCase  )
												for x in graph[vertex]:
																		indegree[x] -= 1
																		if indegree[x] == 0:
																								queue.append(__UpperCAmelCase  )

						if cnt != len(__UpperCAmelCase  ):
												print("""Cycle exists"""  )
						else:
												print(__UpperCAmelCase  )


# Adjacency List of Graph
__lowerCamelCase							=  {0: [1, 2], 1: [3], 2: [3], 3: [4, 5], 4: [], 5: []}

topological_sort(graph)



