#include <bits/stdc++.h>
using namespace std;
long long count(long long n, long long k) {
  long long ans = 1;
  if (n < 0) return 0;
  if (k > n) return 0;
  for (long long i = 0; i < k; i++) {
    ans *= (n - i);
  }
  for (long long i = 0; i < k; i++) {
    ans /= (i + 1);
  }
  return ans * pow(9, k);
}
long long count_last(string n, long long k) {
  long long used = 0;
  long long ans = 0;
  for (long long i = 0; i < n.size(); i++) {
    if (used == k) break;
    if (i == 0) {
      if (n[i] != '0') {
        used++;
        ans += (n[i] - '1') * count(n.size() - i - 1, k - used);
      }
    }
    if (i >= 1) {
      if (n[i] != '0') {
        used++;
        ans += (n[i] - '1') * count(n.size() - i - 1, k - used);
        ans += count(n.size() - i - 1, k - used + 1);
      } else {
        ans += count(n.size() - i - 1, k - used + 1);
      }
    }
  }
  ans++;
  return ans;
}
class EAlmostEverywhereZero {
 public:
  void solve(std::istream& in, std::ostream& out) {
    string n;
    in >> n;
    long long k;
    in >> k;
    long long ans = count(n.size() - 1, k);
    ans += count_last(n, k);
    out << ans << endl;
  }
};
long long main() {
  EAlmostEverywhereZero solver;
  std::istream& in(std::cin);
  std::ostream& out(std::cout);
  solver.solve(in, out);
}
