//PAT1019V1
#include
int FeiDiZeng(int n){
int a[4];
a[0]=n%10; //ge
a[1]=n/10%10; //shi
a[2]=n/100%10; //bai
a[3]=n/1000; //qian
int tmp,i,j;
for(i=0;i<3;i++){
for(j=i+1;j<4;j++){
if(a[i]<a[j]){ //a[0] is max
tmp=a[j];
a[j]=a[i];
a[i]=tmp;
}
}
}
return a[0]*1000+a[1]*100+a[2]*10+a[3];
}
int FeiDiJian(int n){
int a[4];
a[0]=n%10; //ge
a[1]=n/10%10; //shi
a[2]=n/100%10; //bai
a[3]=n/1000; //qian
int tmp,i,j;
for(i=0;i
for(j=i+1;j
if(a[i]>a[j]){
tmp=a[j];
a[j]=a[i];
a[i]=tmp;
}
}
}
return a[0]*1000+a[1]*100+a[2]*10+a[3];
}
int main(){
int n,a[4];
scanf("%d",&n);
a[0]=n%10; //ge
a[1]=n/10%10; //shi
a[2]=n/100%10; //bai
a[3]=n/1000; //qian
// if(a[0]==a[1]==a[2]==a[3]){ //debug
if(a[0]==a[1]&&a[1]==a[2]&&a[2]==a[3]){
printf("%d - %d= 0000",n,n);
}
else{
int FDZ=FeiDiZeng(n),FDJ=FeiDiJian(n);
while(FDZ-FDJ!=6174){
const int result=FDZ-FDJ;
printf("%04d - %04d = %04d\n",FDZ,FDJ,result);
FDZ=FeiDiZeng(result);
FDJ=FeiDiJian(result);
}
printf("%04d - %04d = %04d\n",FDZ,FDJ,FDZ-FDJ);
}
}