def _lowerCamelCase  (		snake_case  ):
							_lowerCAmelCase							=							[0] * len(snake_case  )

							for i in range(1     , len(snake_case  )  ):
														# use last results for better performance - dynamic programming
														_lowerCAmelCase							=							prefix_result[i - 1]
														while j > 0 and input_string[i] != input_string[j]:
																					_lowerCAmelCase							=							prefix_result[j - 1]

														if input_string[i] == input_string[j]:
																					j += 1
														_lowerCAmelCase							=							j

							return prefix_result






def _lowerCamelCase  (		snake_case  ):
							return max(prefix_function(snake_case  )  )


if __name__ == "__main__":
				import doctest

				doctest.testmod()







import re






def _lowerCamelCase  (		snake_case  ):

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






