#include <bits/stdc++.h>
using namespace std;
long long calc(long long k, long long m) {
  if (m == 0) return 1;
  if (m == 1) return k % 1000000007;
  long long s = calc(k, m / 2);
  if (m % 2 == 0) {
    return (s * s) % 1000000007;
  } else {
    long long ans;
    ans = (s * s) % 1000000007;
    return (k * ans) % 1000000007;
  }
}
long long inv[100005], fac[100005], finv[100005];
void make() {
  fac[0] = fac[1] = 1;
  finv[0] = finv[1] = 1;
  inv[1] = 1;
  for (long long i = 2; i < 100005; i++) {
    inv[i] = 1000000007 -
             (long long)inv[1000000007 % i] * (1000000007 / i) % 1000000007;
    fac[i] = (long long)fac[i - 1] * i % 1000000007;
    finv[i] = (long long)finv[i - 1] * inv[i] % 1000000007;
  }
}
long long comb(long long a, long long b) {
  if (a < b) {
    return 0;
  }
  return fac[a] * ((long long)finv[b] * finv[a - b] % 1000000007) % 1000000007;
}
long long ss[100010];
signed main() {
  make();
  long long n, k;
  string s;
  cin >> n >> k >> s;
  if (k == 0) {
    long long ans = 0;
    for (long long i = 0; i < n; i++) {
      ans *= 10;
      ans %= 1000000007;
      ans += s[i] - '0';
      ans %= 1000000007;
    }
    cout << ans << endl;
    return 0;
  }
  for (long long i = 0; i < n; i++) {
    ss[i] = s[i] - '0';
  }
  for (long long i = 1; i < n; i++) {
    ss[i] += ss[i - 1];
    ss[i] %= 1000000007;
  }
  long long ans = 0;
  for (long long i = 0; i < n; i++) {
    long long tmp = 0;
    tmp += calc(10, i);
    tmp *= ss[n - 2 - i];
    tmp %= 1000000007;
    tmp *= comb(n - 2 - i, k - 1);
    tmp %= 1000000007;
    ans += tmp;
    ans %= 1000000007;
  }
  for (long long i = 0; i < n; i++) {
    ans += ((s[n - 1 - i] - '0') * comb(n - 1 - i, k) % 1000000007) *
           calc(10, i) % 1000000007;
    ans %= 1000000007;
  }
  cout << ans << endl;
  return 0;
}
