#include <bits/stdc++.h>
using namespace std;
int dx[] = {1, -1, 0, 0, 1, -1, 1, -1};
int dy[] = {0, 0, 1, -1, 1, -1, -1, 1};
const long double PI = acos(-1);
string n;
int k;
bool ok(string s) {
  if (s.size() < n.size()) return 1;
  return s <= n;
}
void solve() {
  cin >> n >> k;
  vector<string> a;
  if (k == 1) {
    for (int64_t i = (1); i < (10); i++) {
      string tmp = to_string(i);
      if (ok(tmp))
        a.push_back(tmp);
      else {
        cout << a.size() << endl;
        return;
      }
    }
  } else if (k == 2) {
    for (int64_t i = (1); i < (10); i++)
      for (int64_t j = (1); j < (10); j++) {
        string tmp = to_string(i) + to_string(j);
        if (ok(tmp))
          a.push_back(tmp);
        else {
          cout << a.size() << endl;
          return;
        }
      }
  } else if (k == 3) {
    for (int64_t i = (1); i < (10); i++)
      for (int64_t j = (1); j < (10); j++)
        for (int64_t l = (1); l < (10); l++) {
          string tmp = to_string(i) + to_string(j) + to_string(l);
          if (ok(tmp))
            a.push_back(tmp);
          else {
            cout << a.size() << endl;
            return;
          }
        }
  }
  long long ans = a.size();
  int t = a.size();
  if (k == 1)
    for (int i = k + 1; i < n.size(); i++) ans += t;
  if (k == 2)
    for (int i = k + 1; i < n.size(); i++) ans += t * (i - 1);
  if (k == 3)
    for (int i = k + 1; i < n.size(); i++) ans += t * (i - 1) * (i - 2) / 2;
  if (k == 1) ans += n[0];
  if (k == 2) {
    ans += 9 * (n[0] - 1);
    ans += n[1];
  }
  if (k == 3) {
    ans += 9 * 9 * (n[0] - 1);
    ans += 9 * (n[1] - 1);
    ans += n[2];
  }
  cout << ans << endl;
}
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  solve();
  return 0;
}
