#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int INF = 1000000000;
const int mod = 1e9 + 7;
const int maxn = 2e5 + 5;
long long n, m;
int dp[1005][15];
string s;
long long dfs1(long long pos, long long dep) {
  if (dep == 0) return 1;
  if (pos == s.length()) return 0;
  long long ans = 0;
  ans += dfs1(pos + 1, dep);
  ans %= mod;
  ans += (9 * dfs1(pos + 1, dep - 1) % mod);
  ans %= mod;
  return ans % mod;
}
long long dfs2(long long pos, long long dep) {
  if (dep == 0) return 1;
  if (pos == s.length()) return 0;
  long long ans = 0;
  ans += dfs1(pos + 1, dep);
  ans %= mod;
  if (s[pos] > '0') ans += dfs2(pos + 1, dep - 1);
  ans %= mod;
  if (s[pos] > '1') ans += (dfs1(pos + 1, dep - 1) * (s[pos] - '0' - 1) % mod);
  ans %= mod;
  return ans % mod;
}
int main() {
  cin >> s;
  cin >> n;
  long long ans = 0;
  ans += dfs2(1, n - 1);
  ans %= mod;
  ans += (dfs1(1, n - 1) * (s[0] - '0' - 1) % mod);
  ans %= mod;
  ans += dfs1(1, n);
  cout << (ans + mod) % mod;
  return 0;
}
