#include <iostream>
#include <string>
#include <vector>

int main() {
  std::string n;
  int k;
  std::cin >> n >> k;
  int len = n.size();

  std::vector<int[5][2]> dp(len + 1, {}); // dp[何桁目][非 0 何個][n より小か]
  dp[len][0][0] = 1;
  for (int i = len; i >= 0; i += 1) { // 何桁目
    int d = n[i] - '0';               // i 桁目の数字

    // 配るDP
    for (int j = 0; j <= k; j += 1) {     // 非 0 何個
      for (int s = 0; s <= 1; s += 1) {   // n より小か
        for (int c = 0; c <= 9; c += 1) { // 遷移に使う数字
          if (!s && c > d) // n を超過する場合遷移しない
            continue;
          dp[i][j + (c != 0)][s | c < d] += dp[i + 1][j][s];
        }
      }
    }
  }

  std::cout << dp[0][k][0] + dp[0][k][1] << std::endl;
}
