#include<iostream>
using namespace std;
long long n;
int a[10],b[10];//记录n各个位数上的值
long long c[1001];
#include<map>
map<long long, bool>m;
int main()
{
while (cin >> n)
{
int j = 0, num = n;
for(;;j++)
{
memset(a, 0, sizeof(a));//每次输入初始化为0
int y=0;
while (num!= 0)
{
y = num % 10;
num /= 10;
a[y]++;
b[y]++;
}
int maxn = 0, minn = 0;
for (int i = 9; i >= 0; i--)//记录最大值
{
while (a[i])
{
maxn =maxn*10+i;
a[i]--;
}
}
for (int i = 0; i < 10; i++)//记录最小值
{
while (b[i])
{
minn = minn * 10 + i;
b[i]--;
}
}
//cout << maxn << " pp " << minn << endl;
num = maxn - minn;
c[j] = num;
if (m[num])break;//之前出现过相同的差值
else m[num] = 1;
}
bool flag1 = 0;
for (int i = 0;i<j;i++)
{
if (c[i] == c[j])flag1 = 1;
if (flag1)cout << c[i] << " ";
}
}
system("pause");
return 0;
}