#include <bits/stdc++.h>
#pragma GCC optimize(3, "inline", "Ofast")
using namespace std;
const long long mod = 1e9 + 7;
int n, k, a[100010];
char s[100010];
long long mo[100010], sum[100010], jc[100010], ss[100010];
long long qpow(long long x, long long y) {
  long long res = 1;
  while (y) {
    if (y & 1) res = res * x % mod;
    x = x * x % mod, y >>= 1;
  }
  return res;
}
long long C(long long n, long long m) {
  return jc[n] * qpow(jc[n - m] * jc[m] % mod, mod - 2) % mod;
}
int main() {
  long long ans = 0, tp = 0, nw = 0;
  scanf("%d%d", &n, &k);
  scanf("%s", s + 1);
  jc[0] = 1;
  for (int i = 1; i <= n; i++) jc[i] = jc[i - 1] * i % mod;
  for (int i = 1; i <= n; i++) a[i] = s[i] - '0';
  mo[0] = 1;
  for (int i = 1; i <= n; i++) mo[i] = mo[i - 1] * 10 % mod;
  for (int i = 1; i + k - 1 <= n - 1; i++)
    ss[i] = ss[i - 1],
    ss[i] = (ss[i] + mo[i - 1] * C(n - 1 - i, k - 1) % mod) % mod;
  for (int i = 1; i <= n; i++) {
    tp = n - i, tp = min(tp, (long long)n - k);
    ans = (ans + ss[tp] * a[i] % mod) % mod;
    if (i - 1 >= k)
      ans = (ans + mo[n - i] * a[i] % mod * C(i - 1, k) % mod) % mod;
  }
  cout << ans;
}
