#include <bits/stdc++.h>
using namespace std;
int dx[] = {1, -1, 0, 0, 1, -1, 1, -1};
int dy[] = {0, 0, 1, -1, 1, -1, -1, 1};
const long double PI = acos(-1);
string N;
long long K, n;
long long nCr(long long nn, long long r) {
  if (r > n) return 0;
  if (r == 1) return nn;
  if (r == 2) return nn * (nn - 1) / 2;
  if (r == 3) return nn * (nn - 1) * (nn - 2) / 6;
  return 0;
}
long long dp(long long i, long long k, bool smaller) {
  if (k == 0)
    return 1;
  else if (i == n)
    return 0;
  if (smaller)
    return nCr(n - i, k) * pow(9, k);
  else {
    long long oxx = dp(i + 1, k, 1);
    if (N[i] == '0') return oxx;
    long long xxx = dp(i + 1, k - 1, 1) * (N[i] - '1');
    long long nxx = dp(i + 1, k - 1, 0);
    return oxx + xxx + nxx;
  }
}
void solve() {
  cin >> N >> K;
  n = N.size();
  cout << dp(0, K, 0) << endl;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  solve();
  return 0;
}
