#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using Graph = vector<vector<int>>;
int main() {
  string N;
  cin >> N;
  int L = N.size();
  int K;
  cin >> K;
  vector<vector<ll>> dp(L + 1, vector<ll>(4, 0));
  dp.at(1).at(1) = 9;
  for (int n = 2; n <= L; n++) {
    dp.at(n).at(1) = dp.at(n - 1).at(1);
    dp.at(n).at(2) = dp.at(n - 1).at(2) + 9 * dp.at(n - 1).at(1);
    dp.at(n).at(3) = dp.at(n - 1).at(3) + 9 * dp.at(n - 1).at(2);
  }
  ll res = 0;
  for (ll i = 1; i < (ll)(L); i++) {
    res += dp.at(i).at(K);
  }
  if (L > 1) {
    for (ll i = 1; i < (ll)((ll)N.at(0) - '0'); i++) {
      if (K - 1 == 0)
        res += 1;
      else {
        for (int i = 1; i <= L - 1; i++) {
          res += dp.at(i).at(K - 1);
        }
      }
    }
  }
  if (L == 1) {
    if (K == 1)
      res += (ll)(N.at(0) - '0');
    else
      res = 0;
  } else if (L == 2) {
    if (K == 2)
      res += (ll)(N.at(1) - '0');
    else
      res++;
  } else {
    if (K == 1)
      res++;
    else if (K == 2) {
      res += (ll)(N.at(1) - '0');
      for (ll i = 1; i <= L - 2; i++) res += dp.at(i).at(1);
    } else {
      for (ll j = 1; j <= L - 2; j++)
        res += ((ll)(N.at(1) - '0')) * dp.at(j).at(1);
      for (ll j = 1; j <= L - 2; j++) res += dp.at(j).at(2);
    }
  }
  cout << res << endl;
}
