#include <bits/stdc++.h>
using namespace std;
using llong = long long;
using ldbl = long double;
using lpair = pair<llong, llong>;
template <typename T>
constexpr T inf =
    static_cast<T>(pow(10, static_cast<int>(log10(numeric_limits<T>::max())))) +
    7;
constexpr llong mod = 1e9 + 7;
int main() {
  string N;
  llong K;
  cin >> N >> K;
  vector<vector<llong>> ans(100, vector<llong>(3));
  for (int i = 0; i < N.size() - 1; ++i) {
    ans[i][0] = ans[max(0, i - 1)][0] + 9ll;
    ans[i][1] = ans[max(0, i - 1)][1] + 9ll * 9 * i;
    ans[i][2] = ans[max(0, i - 1)][2] + 9ll * 9 * 9 * i * (i - 1) / 2;
  }
  ans[N.size() - 1][0] =
      N[0] - '0' + (N.size() >= 2 ? ans[N.size() - 2][0] : 0);
  ans[N.size() - 1][1] =
      (N.size() >= 2 ? 9ll * (N[0] - '0' - 1) * (N.size() - 1) : 0) +
      (N.size() >= 2 ? ans[N.size() - 2][1] : 0) +
      (N.size() >= 2 ? N[1] - '0' : 0) +
      (N.size() >= 3 ? ans[N.size() - 3][0] : 0);
  ans[N.size() - 1][2] =
      (N.size() >= 3
           ? 9ll * 9 * (N[0] - '0' - 1) * (N.size() - 1) * (N.size() - 2) / 2
           : 0) +
      (N.size() >= 3 ? ans[N.size() - 2][2] : 0) +
      (N.size() >= 3 ? 9ll * (N[1] - '0' - 1) * (N.size() - 2) : 0) +
      (N.size() >= 3 ? ans[N.size() - 3][1] : 0) +
      (N.size() >= 3 ? N[2] - '0' : 0) +
      (N.size() >= 4 ? ans[N.size() - 4][0] : 0);
  assert(K == 1);
  cout << ans[N.size() - 1][K - 1] << endl;
  return 0;
}
