#include <bits/stdc++.h>
using namespace std;
string s;
int k;
int main() {
  cin >> s;
  cin >> k;
  long long ans = 0;
  if (k == 1) {
    int kk = (s[0] - '0');
    ans = kk;
    long long n = s.size() - 1;
    ans += 9LL * n;
    cout << ans << endl;
    return 0;
  }
  if (s.size() < 2) {
    cout << 0 << endl;
    return 0;
  }
  if (k == 2) {
    long long l = (s[0] - '0');
    ans += (l - 1) * 9LL * (long long)(s.size() - 1);
    int posb = 1;
    int sz = s.size();
    while (posb < sz && s[posb] == '0') posb++;
    if (posb == sz) {
      cout << ans << endl;
      return 0;
    }
    l = (s[posb] - '0');
    ans += l;
    ans += (sz - posb - 1) * 9LL;
    if (s.size() > 2) {
      long long sz = s.size();
      sz--;
      ans += sz * (sz - 1) * 9 * 9 / 2;
    }
    cout << ans << endl;
    return 0;
  }
  if (s.size() < 3) {
    cout << 0 << endl;
    return 0;
  }
  long long a = (s[0] - '0');
  long long sz = s.size();
  ans += (a - 1) * (sz - 1) * (sz - 2) * 9 * 9 / 2;
  if (sz > 3) {
    ans += (sz - 1) * (sz - 2) * (sz - 3) / 6 * 9 * 9 * 9;
  }
  int posb = 1;
  while (posb < sz - 1 && s[posb] == '0') posb++;
  if (posb == sz - 1) {
    cout << ans << endl;
    return 0;
  }
  long long b = (s[posb] - '0');
  ans += (b - 1) * (sz - posb - 1) * 9;
  if (sz - posb - 1 >= 2) {
    ans += (sz - posb - 1) * (sz - posb - 2) / 2 * 9 * 9;
  }
  int posc = posb + 1;
  while (posc < sz && s[posc] == '0') posc++;
  if (posc == sz) {
    cout << ans << endl;
    return 0;
  }
  long long c = (s[posc] - '0');
  ans += c;
  ans += (sz - posc - 1) * 9;
  cout << ans << endl;
  return 0;
}
