#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000000 + 10;
long long f[maxn], p[maxn], a[maxn], mod = 1e9 + 7, ans, n, k;
void pre() {
  f[0] = 1;
  for (int i = 1; i <= n; i++) f[i] = f[i - 1] * i, f[i] %= mod;
  return;
}
long long pw(long long x, long long y) {
  long long ret = 1;
  for (int i = 61; i >= 0; i--) {
    ret *= ret;
    ret %= mod;
    if ((1LL << i) & y) ret *= x;
    ret %= mod;
  }
  return max(ret, 1LL);
}
long long choose(long long x, long long y) {
  if (x == 0) return 1;
  if (y == 0) return 0;
  if (y < x) return 0;
  long long ret = f[y];
  ret *= pw(f[x], mod - 2);
  ret %= mod;
  ret *= pw(f[y - x], mod - 2);
  ret %= mod;
  return ret;
}
int main() {
  cin >> n >> k;
  string s;
  cin >> s;
  for (int i = 0; i < n; i++) a[i] = s[i] - '0';
  if (k == 0) {
    for (int i = 0; i < n; i++) {
      ans *= 10;
      ans += a[i];
      ans %= mod;
    }
    cout << ans << endl;
    return 0;
  }
  pre();
  ans = a[n - 1] * choose(k, n - 1);
  for (int i = n - 2; i >= 0; i--) {
    int t = n - 1 - i;
    p[i] = p[i + 1] + choose(k - 1, n - t - 1) * pw(10, t - 1);
    p[i] %= mod;
    ans %= mod;
    ans += choose(k, n - 1 - t) * a[i] * pw(10, t);
    ans += a[i] * p[i];
    ans %= mod;
  }
  cout << ans << endl;
  return 0;
}
