def largest_digit(number):
    return int(max(str(check_num(number))))

def desc_digits(number):
    return int(''.join(sorted(str(check_num(number)))[::-1]))
	
def asc_digits(number):
    return int(''.join(sorted(str(check_num(number)))))
	
def kaprekar(number, counter=0):
    if number == 6174:
        return counter
    number = desc_digits(number) - asc_digits(number)
    return counter + 1 if number == 6174 else kaprekar(number, counter + 1)

def check_num(number):
    if len(str(number)) > 4:
        raise SystemExit('You have passed a number with more than 4 digits, and a kidney stone.')
    while len(str(number)) < 4:
        number = '0' + str(number)
    return number

print("Challenge Group")
for ii in [1234, 3253, 9800, 3333, 120]:
    print(largest_digit(ii))
print("\nBonus 1 Group")
for ii in [1234, 3253, 9800, 3333, 120]:
    print(desc_digits(ii))
print("\nBonus 2 Group")
for ii in [6589, 5455, 6174]:
    print(kaprekar(ii))