import java.util.*;
public class uva_263 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
String st = sc.nextLine();
if(st.equals("0")) break;
int count = 0;
System.out.println("Original number was "+st);
String result [] = new String [1001];
boolean flag = true;
while(count < 1000 && flag == true) {
String str_store = st;
int num_max = Change(str_store,1);
int num_min = Change(str_store,0);
int dis = num_max - num_min;
System.out.println(num_max + " - " + num_min + " = "+ dis);
String dis_str = Integer.toString(dis);
//用++count是為了把最新的dis_str值,放到下一位
++count;
result[count] = dis_str;
for(int i = 0; i < count; i++) {
if( dis_str.equals(result[i]) ) {
flag = false;
break;
}
}
st = dis_str;
}
if(count >= 1000) {
System.out.println("error");
}
else {
System.out.println("Chain length " + count);
}
//題目要求每個之間都要換行
System.out.println();
}
}
public static int Change(String st,int flag) {
String st_store [] = st.split("");
String st_max="";
String st_min = "";
//排序後,st_store裡面的值會由小排到大
Arrays.sort(st_store);
for(int i = 0; i < st_store.length; i++) {
//把st_max加在後面,他就會倒過來
//ex. st_store = 12 , st_max = 1+"" --> st_max = 2+"1" = 21
st_max = st_store[i]+st_max;
//min沒影響,直接加
st_min += st_store[i];
}
int num_max = Integer.parseInt(st_max);
int num_min = Integer.parseInt(st_min);
//flag就判斷是max或min而已
if(flag == 1) {
return num_max;
}
else {
return num_min;
}
}
}