#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
const long double pi = acos(-1.0);
const long long INF = 1LL << 61;
template <class T>
bool chmax(T &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool chmin(T &a, const T &b) {
  if (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
long long gcd(long long x, long long y) { return y ? gcd(y, x % y) : x; }
long long lcm(long long x, long long y) { return x / gcd(x, y) * y; }
long long jou(long long N, long long P) {
  if (P == 0) return 1;
  if (P % 2 == 0) {
    long long t = jou(N, P / 2);
    return t * t % mod;
  }
  return (N * jou(N, P - 1)) % mod;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  string s;
  long long k;
  cin >> s >> k;
  long long n = s.size();
  vector<long long> p(n);
  for (int i = 0; i < (int)(n); i++) {
    p[i] = s[i] - '0';
  }
  long long ans = 0;
  if (n >= k) {
    if (n > k) {
      long long x = pow(9, k);
      if (k == 1) x *= n - 1;
      if (k == 2) x *= (n - 1) * (n - 2) / 2;
      if (k == 3) x *= (n - 1) * (n - 2) * (n - 3) / 6;
      ans += x;
    }
    long long y = (p[0] - 1) * pow(9, k - 1);
    if (k == 2) y *= n - 1;
    if (k == 3) y *= (n - 1) * (n - 2) / 2;
    ans += y;
    if (k == 1) ans++;
    if (k == 2) {
      int memo = -1;
      ;
      for (int i = 1; i < (int)(n); i++) {
        if (p[i]) {
          ans += p[i];
          memo = i;
          break;
        }
      }
      if (memo != -1) ans += 9 * (n - 1 - memo);
    }
    if (k == 3) {
      if (n > 3) {
        ans += 81 * (n - 2) * (n - 3) / 2;
      }
      ans += (p[1] - 1) * 9 * (n - 2);
      int memo = -1;
      for (int i = 2; i < n; i++) {
        if (p[i]) {
          ans += p[i];
          memo = i;
          break;
        }
      }
      if (memo != -1) ans += 9 * (n - 1 - memo);
    }
  }
  cout << ans << "\n";
}
