#include <bits/stdc++.h>
using namespace std;
const long long mod = 1000000007;
bool dbg = false;
long long gcd(long long a, long long b) {
  if (a % b == 0) {
    return (b);
  } else {
    return (gcd(b, a % b));
  }
}
long long lcm(long long a, long long b) { return (a / gcd(a, b)) * b; }
void solve() {}
int main() {
  string n;
  int N;
  int k;
  cin >> n;
  cin >> k;
  N = n.size();
  long long ans = 0;
  if (k == 1) {
    ans += (N - 1) * 9;
    ans += (n.at(0) - '0');
    cout << ans << endl;
  }
  if (k == 2) {
    for (int i = 1; i < N - 1; i++) {
      ans += (9 * (i * 9));
    }
    ans += (n.at(0) - '1') * (N - 1) * 9;
    bool ck = false;
    for (int i = 1; i < N; i++) {
      if (!ck) {
        ans += (n.at(i) - '0');
        if (n.at(i) != '0') {
          ck = true;
        }
      } else {
        ans += 9;
      }
    }
    if (ans < 0) {
      ans = 0;
    }
    cout << ans << endl;
  }
  if (k == 3) {
    for (int i = 2; i < N - 1; i++) {
      ans += (i * (i - 1) * 9 * 9 * 9 / 2);
    }
    ans += (n.at(0) - '1') * (N - 1) * 9 * (N - 2) * 9 / 2;
    int M = N - 1;
    for (int j = 1; j < M; j++) {
      if (n.at(j) == '0') {
        continue;
      }
      for (int i = 1; i < M - 1; i++) {
        ans += (9 * (i * 9));
      }
      ans += (n.at(j) - '1') * (M - 1) * 9;
      bool ck = false;
      for (int i = j; i < M; i++) {
        if (!ck) {
          ans += (n.at(i + 1) - '0');
          if (n.at(i + 1) != '0') {
            ck = true;
          }
        } else {
          ans += 9;
        }
      }
      break;
    }
    if (ans < 0) {
      ans = 0;
    }
    cout << ans << endl;
  }
  return 0;
}
