#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1024000000")
#pragma warning(disable : 6031)
#pragma warning(disable : 4244)
#pragma warning(disable : 26451)
using namespace std;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
const long long mod = int(1e9) + 7;
const int INF = 1e9;
long long get_k1(string n) { return ((int)(n).size() - 1) * 9 + (n[0] - '0'); }
long long get_k2(string n) {
  long long tn = (int)(n).size() - 1;
  long long res = 0;
  if (tn >= 2) res = (tn * (tn - 1)) / 2LL * 81;
  for (int i = 1; i <= n[0] - '0'; i++) {
    string ts = string((int)(n).size() - 1, '9');
    if (i == n[0] - '0') ts = n.substr(1);
    res += get_k1(ts);
  }
  return res;
}
long long get_k3(string n) {
  long long tn = (int)(n).size() - 1;
  long long res = 0;
  if (tn >= 3) {
    res = (tn - 2) * (tn - 1) * (tn) / 6LL * 729LL;
  }
  for (int i = 1; i <= n[0] - '0'; i++) {
    string ts = string((int)(n).size() - 1, '9');
    if (i == n[0] - '0') ts = n.substr(1);
    res += get_k2(ts);
  }
  return res;
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  cout << setprecision(18) << fixed;
  string n;
  int k;
  cin >> n >> k;
  if ((int)(n).size() <= 2) {
    stringstream ss;
    ss << n;
    int nn;
    ss >> nn;
    int res = 0;
    for (int i = 1; i <= nn; i++) {
      int tk = 0;
      int ti = i;
      while (ti) {
        if (ti % 10 > 0) tk++;
        ti /= 10;
      }
      if (tk == k) res++;
    }
    cout << res;
    return 0;
  }
  if (k == 1) {
    cout << get_k1(n);
  } else if (k == 2) {
    cout << get_k2(n);
  } else if (k == 3) {
    cout << get_k3(n);
  }
  return 0;
}
