#include <bits/stdc++.h>
using namespace std;
int main() {
  string N;
  int K;
  int i;
  cin >> N >> K;
  long long int ans = 0;
  if (K == 1) {
    ans = (N.length() - 1) * 9 + (N[0] - '0');
  } else if (K == 2) {
    ans = ((N.length() - 1) * (N.length() - 2) * 81 / 2);
    ans += (N[0] - '0' - 1) * (N.length() - 1) * 9;
    int find = 0;
    for (i = 1; i < N.length(); i++) {
      if (N[i] - '0' > 0) {
        find = i;
        break;
      }
    }
    if (find > 0) ans += (N.length() - find - 1) * 9 + (N[find] - '0');
  } else if (K == 3) {
    ans = ((N.length() - 1) * (N.length() - 2) * (N.length() - 3) * 243 / 2);
    ans += (N[0] - '0' - 1) * ((N.length() - 1) * (N.length() - 2) * 81 / 2);
    int find1 = 0;
    int find2 = 0;
    for (i = 1; i < N.length(); i++) {
      if (N[i] - '0' > 0 && find1 > 0) {
        find2 = i;
        break;
      } else if (N[i] - '0' > 0 && find1 == 0)
        find1 = i;
    }
    if (find1 > 0 && find1 < N.length() - 2) {
      ans += (N.length() - find1 - 2) * (N.length() - find1 - 3) * 81 / 2;
      ans += (N[find1] - '0' - 1) * (N.length() - find1 - 1) * 9;
      if (find2 > 0) ans += (N.length() - find2 - 1) * 9 + (N[find2] - '0');
    } else if (find1 > 0 && find1 >= N.length() - 2) {
      int count = (N[N.length() - 2] - '0') * 10 + (N[N.length() - 1] - '0');
      int zero = 0;
      int cope = count;
      cope /= 10;
      ans += (count - cope);
    }
  }
  cout << ans << endl;
}
