#include <bits/stdc++.h>
using namespace std;
int main() {
  string n;
  cin >> n;
  int k;
  cin >> k;
  unsigned long long ret = 0;
  if (k == 1) {
    int l = n[0] - '0';
    ret += l;
    ret += ((int)(n.size()) - 1) * 9;
  } else if (k == 2) {
    if (n.size() == 1) {
    } else {
      int l = n[0] - '0';
      bool isMin = false;
      for (int i = 1; i < n.size(); ++i) {
        int t = n[i] - '0';
        if (isMin) {
          ret += l * 9;
        } else {
          ret += t;
          ret += (l - 1) * 9;
        }
        if (t != 0) {
          isMin = true;
        }
      }
      int j = n.size() - 2;
      for (int i = 1; i < n.size() - 1; ++i) {
        ret += 81 * j;
        --j;
      }
    }
  } else if (k == 3) {
    if (n.size() <= 2) {
    } else {
      int l = n[0] - '0';
      bool isMinI = false;
      for (int i = 1; i < n.size() - 1; ++i) {
        int t = n[i] - '0';
        bool isMinJ = isMinI;
        for (int j = i + 1; j < n.size(); ++j) {
          int u = n[j] - '0';
          if (isMinI && isMinJ) {
            ret += l * 9 * 9;
          } else if (!isMinI && isMinJ) {
            ret += t * 9;
            ret += (l - 1) * 81;
          } else {
            ret += u;
            ret += (t - 1) * 9;
            ret += (l - 1) * 81;
          }
          if (u != 0) {
            isMinJ = true;
          }
        }
        if (t != 0) {
          isMinI = true;
        }
      }
      for (int i = 1; i < n.size() - 2; ++i) {
        for (int j = i + 1; j < n.size() - 1; ++j) {
          for (int k = j + 1; k < n.size(); ++k) {
            ret += 9 * 9 * 9;
          }
        }
      }
    }
  }
  cout << ret << endl;
  return 0;
}
