



import os

# Precomputes a list of the 100 first triangular numbers
__UpperCAmelCase	       =	[int(0.5 * n * (n + 1)) for n in range(1, 101)]
def 		UpperCamelCase     (       )     ->					Any:
   UpperCamelCase   :  Tuple						     =     os.path.dirname(os.path.realpath(snake_case__     )     )
   UpperCamelCase   :  str						     =     os.path.join(snake_case__	,					'words.txt'     )

   UpperCamelCase   :  str						     =     ''
   with open(snake_case__     ) as f:
      UpperCamelCase   :  Any						     =     f.readline()

   UpperCamelCase   :  str						     =     [word.strip('"'     ) for word in words.strip('\r\n'     ).split(','     )]
   UpperCamelCase   :  Tuple						     =     [
       word
       for word in [sum(ord(snake_case__     ) - 64 for x in word     ) for word in words]
       if word in TRIANGULAR_NUMBERS
   ]
   return len(snake_case__     )


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








import re
def 		UpperCamelCase     (       snake_case__	:   str     )     ->					str:

   if len(re.findall('[ATCG]'	,					snake_case__     )     ) != len(snake_case__     ):
      raise ValueError('Invalid Strand'     )

   return dna.translate(dna.maketrans('ATCG'	,					'TAGC'     )     )


if __name__ == "__main__":
    import doctest

    doctest.testmod()



