x = int(input()) ## 输入数值
y = [int(i) for i in list(str(x))] ## 转换为列表,存储每一数字
n = len(y) ## 计算该数值的数字个数if len(set(y)) == 1: ## 如果数字都相等,则循环节之和为0
result = 0else:
di = []
whileTrue: ## 设置迭代循环if len(y)!=n: ## 判断长度是否一致
first = [0]*(n-len(y)) ## 生成重复值
first.extend(y) ## 若不一致则添0
y = first
min_y = sorted(y) ## 顺排列取组合最小值
max_y = sorted(y,reverse=True) ## 逆序排列取组合最大值
min_x = ""## 将列表合并为数值:
max_x = ""for i in range(len(y)):
min_x = min_x+str(min_y[i])
max_x = max_x+str(max_y[i])
diff_x = int(max_x)-int(min_x) ## 计算最大值-最小值if diff_x == x or any([i == diff_x for i in di]): ## 判断条件:两种情形 1.每次都相等 或 2.出现循环的情况breakelse:
x = diff_x ## 不满足条件时,将差值重新赋给初始值
y = [int(i) for i in list(str(x))]
di.append(diff_x) ## 将每次循环的差值存储起来
result = sum(di[di.index(diff_x):]) ## 求循环节的和
print(result)