//ABC182_C_To 3 bit_all+組み合わせ//
#include <bits/stdc++.h>
//repマクロの定義//
#define rep(i, n) for (int i = 0; i < (n); i++)
using namespace std;

int f(long long a){
    long long ga=a;
    int A[11];
    int j=0;

    while(ga>0){
        A[j]=ga%10;
        ga/=10;
        j++;
    }
    sort(A,A+j);

    int g=0;
    int G=0;

    long long gj=1;
    long long Gj=1;
    rep(m,j-1){
        Gj*=10;
    }

    for (int i=0;i<j;i++){
        g+=A[i]*gj;
        G+=A[i]*Gj;
        gj*=10;
        Gj/=10;
    }

    return g-G;
}

int main(){
    //入力を用意//
    long long K,N;
    cin >> N >> K;

    int a=f(N);
    
    if(K==0){
        a=N;
    }else if(K==1){
        a=f(N);
    }else{
        for(int i=1;i<K;i++){
            a=f(a);
        }
    }
    
    //出力//
    cout << a << endl;

    return 0;
    
}
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n,k,a[20],b[20];
ll getlen(){
	for(ll i=10;i>=1;i--){
		if(a[i]!=0)return i;
	}
	return 0;
}
int main(){
	cin >> n >> k;
	if(k==0){
		cout << n;
		return 0;
	}
	ll i=0;
	while(n>0){
		i++;
		a[i]=n%10;
		n/=10;
	}
	while(k--){
		ll t=getlen();
		//printf("t=%lld\n",t);
		sort(a+1,a+t+1);
		n=0;
		for(ll i=t;i>=1;i--){
			n=n*10+a[i];
		}
		ll m=0;
		for(ll i=1;i<=t;i++){
			m=m*10+a[i];
			a[i]=0;
		}
		n-=m;
		if(k==0)cout << n;
		i=0;
		while(n>0){
			i++;
			a[i]=n%10;
			n/=10;
		}
	}
} 