#include <bits/stdc++.h>
using namespace std;
long long MOD = 1e9 + 7;
int INF = 1 << 30;
long long INFL = 1LL << 60;
long long comb(long long x, long long y) {
  if (y == 1) return x;
  long long ans = 1;
  for (long long i = 0; i < (y); i++) ans *= x - i;
  for (int i = 1; i <= y; i++) ans /= i;
  return ans;
}
int main() {
  string N;
  cin >> N;
  long long K;
  cin >> K;
  long long ans = 0;
  long long keta = N.size();
  for (int i = 1; i < keta; i++) {
    if (K == 1) {
      ans += 9;
    } else if (K == 2) {
      if (i >= 3) {
        ans += 81 * comb(i - 1, 1);
      } else if (i == 2) {
        ans += 81;
      } else {
        continue;
      }
    } else {
      if (i == 3) {
        ans += 729;
      } else if (i > 3) {
        ans += 729 * comb(i - 1, 2);
      } else {
        continue;
      }
    }
  }
  vector<int> num(keta + 1, 0);
  for (int i = 1; i <= keta; i++) num[i] = (int)(N.at(i - 1) - '0');
  if (K == 1) ans += num[1];
  if (K == 2) {
    ans += (num[1] - 1) * (keta - 1) * 9;
    cout << ans << endl;
    for (int f = 2; f <= keta; f++) {
      if (num[f] > 0) {
        ans += 9 * (keta - f) * (num[f]);
        ans += num[f];
        break;
      }
    }
  }
  if (K == 3) {
    ans += (num[1] - 1) * comb(keta - 1, 2) * 81;
    for (int f = 2; f <= keta; f++) {
      if (num[f] > 0) {
        for (int v = 0; v <= num[f]; v++) {
          if (v == 0 && keta - f >= 2)
            ans += 81 * comb(keta - f, 2);
          else if (v < num[f])
            ans += 9 * (keta - f);
          else {
            for (int vv = f + 1; vv <= keta; vv++) {
              ans += num[vv];
            }
          }
        }
      }
    }
  }
  cout << ans << endl;
  return 0;
}
