#include <bits/stdc++.h>
int binomial(int n, int r) {
  int bunbo = 1, bunshi = 1;
  for (int i = 0; i < r; i++) {
    bunbo *= n - i;
    bunshi *= i + 1;
  }
  return bunbo / bunshi;
}
int binomial9(int n, int r) {
  int ans = binomial(n, r);
  for (int i = 0; i < r; i++) {
    ans *= 9;
  }
  return ans;
}
int f1(const std::string& N) {
  int keta = N.size();
  int sentou = N[0] - '0';
  return sentou + (keta - 1) * 9;
}
int f22(int k1, int k2) {
  int ans = 0;
  int K = k1 * 10 + k2;
  for (int i1 = 1; i1 <= 9; i1++) {
    for (int i2 = 1; i2 <= 9; i2++) {
      if (i1 * 10 + i2 <= K) {
        ans++;
      }
    }
  }
  return ans;
}
int f33(int k1, int k2, int k3) {
  int ans = 0;
  int K = k1 * 100 + k2 * 10 + k3;
  for (int i1 = 1; i1 <= 9; i1++) {
    for (int i2 = 1; i2 <= 9; i2++) {
      for (int i3 = 1; i3 <= 9; i3++) {
        if (i1 * 100 + i2 * 10 + i3 <= K) {
          ans++;
        }
      }
    }
  }
  return ans;
}
int f2(const std::string& N) {
  int keta = N.size();
  std::vector<int> I(N.size());
  for (size_t i = 0; i < N.size(); i++) {
    I[i] = N[i] - '0';
  }
  if (keta <= 1) {
    return 0;
  } else if (keta == 2) {
    return f22(I[0], I[1]);
  }
  int ans_sentou =
      I[1] + binomial9(keta - 2, 1) + (I[0] - 1) * binomial9(keta - 1, 1);
  int ans_naka = binomial9(keta - 1, 2);
  return ans_sentou + ans_naka;
}
int f3(const std::string& N) {
  int keta = N.size();
  std::vector<int> I(N.size());
  for (size_t i = 0; i < N.size(); i++) {
    I[i] = N[i] - '0';
  }
  if (keta <= 2) {
    return 0;
  } else if (keta == 3) {
    return f33(I[0], I[1], I[2]);
  }
  int ans_sentou = f22(I[1], I[2]) + I[1] * binomial9(keta - 3, 1) +
                   binomial9(keta - 2, 2) + (I[0] - 1) * binomial9(keta - 1, 2);
  int ans_naka = binomial9(keta - 1, 3);
  return ans_sentou + ans_naka;
}
int main() {
  std::string N;
  int K;
  std::cin >> N >> K;
  int ans;
  if (K == 1) {
    ans = f1(N);
  } else if (K == 2) {
    ans = f2(N);
  } else {
    ans = f3(N);
  }
  std::cout << ans;
}
