#include <bits/stdc++.h>
using namespace std;
const long long INF = 1e17;
const long long MOD = 1000000007;
const long long MAX = 1000001;
long long max(long long a, long long b) {
  if (a > b) {
    return a;
  }
  return b;
}
long long min(long long a, long long b) {
  if (a > b) {
    return b;
  }
  return a;
}
long long gcd(long long a, long long b) {
  if (b == 0) {
    return a;
  }
  if (a < b) {
    return gcd(b, a);
  }
  return gcd(b, a % b);
}
long long lcm(long long a, long long b) { return a * b / gcd(a, b); }
int main() {
  string s;
  long long K;
  cin >> s >> K;
  long long d = s.size();
  long long n[200];
  for (int i = 1; i <= d; i++) {
    n[i] = s[i - 1] - '0';
  }
  long long dp[200][2][4] = {};
  dp[0][1][0] = 1;
  for (int i = 1; i <= d; i++) {
    for (int j = 0; j < 4; j++) {
      dp[i][0][j] = dp[i - 1][0][j];
      if (n[i] != 0) {
        dp[i][0][j] += dp[i - 1][1][j];
      } else {
        dp[i][1][j] = dp[i - 1][1][j];
      }
    }
    for (int j = 1; j <= 3; j++) {
      dp[i][0][j] += 9 * dp[i - 1][0][j - 1];
      if (n[1] != 0) {
        dp[i][0][j] += (n[i] - 1) * dp[i - 1][1][j - 1];
      }
      if (n[i] != 0) {
        dp[i][1][j] += dp[i - 1][1][j - 1];
      }
    }
  }
  cout << dp[d][0][K] + dp[d][1][K];
  system("PAUSE");
}
