#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pi;
char s[20];
ll g1(ll x){
	vector<int> frec(10);
	int i = 0;
	while(x){
		frec[x%10]++;
		//s[i++]=x%10 + '0';
		x/=10;
	}
	for(int i = 9; i >= 0; i--)
		for(int j = 0; j < frec[i]; j++)
			x=x*10+i;
	return x;
}
ll g2(ll x){
	vector<int> frec(10);
	int i = 0;
	while(x){
		frec[x%10]++;
		x/=10;
	}
	for(int i = 1; i < 10; i++)
		for(int j = 0; j < frec[i]; j++)
			x=x*10+i;
	return x;
}
ll fun(ll x){
	return g1(x)-g2(x);
}
int main(){
	int n,k;
	scanf("%d %d",&n,&k);
	ll ans = n;
	for(int i = 1; i <= k; i++){
		ans = fun(ans);
	}
	printf("%lld\n", ans);
	return 0;
}
#include<bits/stdc++.h>
using namespace std;
int mod = 1e9+7;
int add(int a, int b){
    int ans = a + b;
    while(ans >= mod){
        ans -= mod;
    }
    return ans;
}
void add_self(int & a, int b){
    a = add(a,b);
}
int sub(int a, int b){
    int ans = a - b;
    while(ans < 0){
        ans += mod;
    }
    return ans;
}
void sub_self(int & a, int b){
    a = sub(a,b);
}
int mul(int a, int b){
    int ans = ((int64_t)a * b) % mod;
    return ans;
}
int binexpo(int b, int e){
    int ans = 1;
    while(e){
        if(e & 1){
            ans = mul(ans,b);
        }
        b = mul(b,b);
        e >>= 1;
    }
    return ans;
}
int64_t dp[74][1<<21];
int main(){
    int64_t a,b;
    cin >> a >> b;
    int64_t zero = a;
    int64_t len = b - a + 1;
    int64_t ans = 0;
    vector<int>masks(len);
    vector<int>primes;
    vector<bool>is_prime(73,true);
    for(int i = 2; i < 73; ++i){
        if(is_prime[i]){
            primes.push_back(i);
            for(int j = i * i; j < 73; j+= i){
                is_prime[j] = false;
            }
        }
    }
    for(int j = 0; j < len; ++j){
        for(int k = 0; k < primes.size(); ++k){
            if((j + zero)%primes[k] == 0){
                masks[j] |= (1 << k);
            }
        }
    }
    dp[0][0] = 1;
    for(int i = 1; i <= len; ++i){
        for(int k = 0; k < (1<<20); ++k){
            dp[i][k] = dp[i-1][k];
        }
        for(int k = 0; k < (1<<20); ++k){
            if((masks[i-1] & k) == masks[i-1]){
                dp[i][k] += dp[i][k ^ masks[i-1]];
            }
        }
    }
    for(int i = 0; i < (1<<20); ++i){
        ans += dp[len][i];
    }
    cout << ans << "\n";
    return 0;
}
//12341234