





a__:      Union[str, Any]									=		{
    'meter': 'm',
    'kilometer': 'km',
    'megametre': 'Mm',
    'gigametre': 'Gm',
    'terametre': 'Tm',
    'petametre': 'Pm',
    'exametre': 'Em',
    'zettametre': 'Zm',
    'yottametre': 'Ym',
}
# Exponent of the factor(meter)
a__:      Union[str, Any]									=		{
    'm': 0,
    'km': 3,
    'Mm': 6,
    'Gm': 9,
    'Tm': 12,
    'Pm': 15,
    'Em': 18,
    'Zm': 21,
    'Ym': 24,
}


def 	UpperCamelCase__(       UpperCamelCase__			:       float ,     UpperCamelCase__			:       str ,     UpperCamelCase__			:       str  )->float:
       A__											=						from_type.lower().strip('''s'''  )
       A__											=						to_type.lower().strip('''s'''  )

       A__											=						UNIT_SYMBOL.get(UpperCamelCase__ ,     UpperCamelCase__  )
       A__											=						UNIT_SYMBOL.get(UpperCamelCase__ ,     UpperCamelCase__  )

       if from_sanitized not in METRIC_CONVERSION:
              A__											=						(
                  f"Invalid 'from_type' value: {from_type!r}.\n"
                  f"Conversion abbreviations are: {', '.join(UpperCamelCase__  )}"
              )
              raise ValueError(UpperCamelCase__  )
       if to_sanitized not in METRIC_CONVERSION:
              A__											=						(
                  f"Invalid 'to_type' value: {to_type!r}.\n"
                  f"Conversion abbreviations are: {', '.join(UpperCamelCase__  )}"
              )
              raise ValueError(UpperCamelCase__  )
       A__											=						METRIC_CONVERSION[from_sanitized]
       A__											=						METRIC_CONVERSION[to_sanitized]
       A__											=						1

       if from_exponent > to_exponent:
              A__											=						from_exponent - to_exponent
       else:
              A__											=						-(to_exponent - from_exponent)

       return value * pow(10 ,     UpperCamelCase__  )


if __name__ == "__main__":
       from doctest import testmod

       testmod()












def 	UpperCamelCase__(       UpperCamelCase__			:       Dict  )->Dict:
       # if the collection is empty, returns empty
       if collection == []:
              return []

       # get some information about the collection
       A__											=						len(UpperCamelCase__  )
       A__											=						max(UpperCamelCase__  )
       A__											=						min(UpperCamelCase__  )

       # create the counting array
       A__											=						coll_max + 1 - coll_min
       A__											=						[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 ,     UpperCamelCase__  ):
              A__											=						counting_arr[i] + counting_arr[i - 1]

       # create the output collection
       A__											=						[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 ,     UpperCamelCase__  )  ):
              A__											=						collection[i]
              counting_arr[collection[i] - coll_min] -= 1

       return ordered


def 	UpperCamelCase__(       UpperCamelCase__			:       Optional[int]  )->Tuple:
       return "".join([chr(UpperCamelCase__  ) for i in counting_sort([ord(UpperCamelCase__  ) for c in string]  )]  )


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

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





