



def 		UpperCamelCase     (       snake_case__	:   Union[str, Any]     )     ->					Optional[int]:
   # if the collection is empty, returns empty
   if collection == []:
      return []

   # get some information about the collection
   UpperCamelCase   :  List[str]						     =     len(snake_case__     )
   UpperCamelCase   :  Union[str, Any]						     =     max(snake_case__     )
   UpperCamelCase   :  Optional[int]						     =     min(snake_case__     )

   # create the counting array
   UpperCamelCase   :  Tuple						     =     coll_max + 1 - coll_min
   UpperCamelCase   :  Dict						     =     [0] * counting_arr_length

   # count how much a number appears in the collection
   for number in collection:
      counting_arr[number - coll_min] += 1

   # sum each position with it's predecessors. now, counting_arr[i] tells
   # us how many elements <= i has in the collection
   for i in range(1	,					snake_case__     ):
      UpperCamelCase   :  Optional[int]						     =     counting_arr[i] + counting_arr[i - 1]

   # create the output collection
   UpperCamelCase   :  List[Any]						     =     [0] * coll_len

   # place the elements in the output, respecting the original order (stable
   # sort) from end to begin, updating counting_arr
   for i in reversed(range(0	,					snake_case__     )     ):
      UpperCamelCase   :  List[str]						     =     collection[i]
      counting_arr[collection[i] - coll_min] -= 1

   return ordered
def 		UpperCamelCase     (       snake_case__	:   List[Any]     )     ->					Optional[int]:
   return "".join([chr(snake_case__     ) for i in counting_sort([ord(snake_case__     ) for c in string]     )]     )


if __name__ == "__main__":
    # Test string sort
    assert counting_sort_string('''thisisthestring''') == "eghhiiinrsssttt"

    __UpperCAmelCase	       =	input('''Enter numbers separated by a comma:\n''').strip()
    __UpperCAmelCase	       =	[int(item) for item in user_input.split(''',''')]
    print(counting_sort(unsorted))








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



