#include <bits/stdc++.h>
using namespace std;
using P = pair<long long, long long>;
const int MOD = 1e9 + 7;
const long long INF = 1e+14;
const double PI = 3.14159265349;
long long bi_pow(long long x, long long n) {
  long long res = 1;
  while (n > 0) {
    if (n % 2 == 1) {
      res = res * x % MOD;
    }
    x = x * x % MOD;
    n >>= 1;
  }
  return res;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  long long N, K;
  cin >> N >> K;
  long long D = log10((double)N) + 1;
  long long last = N / pow(10, D - 1);
  vector<long long> digits(D);
  long long powten = 1;
  for (long long(i) = 0; (i) < (D); (i)++) {
    digits[i] = (N % (powten * 10) - N % powten) / powten;
    powten *= 10;
  }
  vector<vector<long long>> dp(D, vector<long long>(4, 0));
  dp[0][0] = 1;
  dp[0][1] = 9;
  for (long long(i) = (1); (i) < (D - 1); (i)++) {
    dp[i][0] = 1;
    dp[i][1] = dp[i - 1][0] * 9 + dp[i - 1][1];
    dp[i][2] = dp[i - 1][1] * 9 + dp[i - 1][2];
    dp[i][3] = dp[i - 1][2] * 9 + dp[i - 1][3];
  }
  long long ans = dp[D - 2][K];
  for (long long d = D - 1; d >= 0; d--) {
    long long upper = digits[d];
    if (upper == 0) {
      continue;
    } else {
      if (d > 0) {
        if (K >= 1) {
          ans += dp[d - 1][K - 1] * (upper - 1);
          if (K == 1) {
            ans++;
          }
        }
        if (d < D - 1 && d > 1) {
          ans += dp[d - 1][K];
        }
      } else {
        ans += upper;
      }
      K--;
    }
    if (K <= 0) break;
  }
  cout << ans << "\n";
  return 0;
}
