#include <bits/stdc++.h>
using namespace std;
double pi = acos(-1);
const double ex = 1e-5;
inline long long lowbit(long long x) { return x & (-x); }
inline long long min(long long a, long long b) { return a < b ? a : b; }
inline long long max(long long a, long long b) { return a > b ? a : b; }
const int INF = 0x3f3f3f3f, max_n = 200005;
const int mod = 1000000007;
inline long long gcd(long long a, long long b) {
  return b == 0 ? a : gcd(b, a % b);
}
string s;
int C(int n, int k) {
  int p = 1, q = 1;
  for (int i = n - k + 1; i <= n; i++) p *= i;
  for (int i = 1; i <= k; i++) q *= i;
  return p / q;
}
bool l(string s) {
  for (int i = 0; i < s.size(); i++) {
    if (s[i] != 0) {
      false;
    }
  }
  return true;
}
long long f(string s, int k) {
  long long ans = 0;
  if (k == 1) {
    return s[0] - '0' + (s.size() - 1) * 9;
  } else if (k == 2) {
    if (s.size() == 1 || l(s)) {
      return 0;
    }
    int g = s[0] - '0' - 1 + 9 * (s.size() - 1);
    ans += C(g, 2);
    ans -= C(s[0] - '0' - 1, 2);
    ans -= C(9, 2) * (s.size() - 1);
    ans += (s[1] - '0' + 9 * (s.size() - 2));
  } else if (k == 3) {
    int g = s[0] - '0' - 1;
    ans += 9 * 9 * 9 * C(s.size() - 1, 3);
    ans += C(s.size() - 1, 2) * 9 * 9 * g;
    ans += f(s.substr(1, s.size() - 1), 2);
  }
  return ans;
}
int k;
int main() {
  long long ans = 0;
  cin >> s;
  cin >> k;
  cout << f(s, k) << '\n';
}
