#include <bits/stdc++.h>
using namespace std;
int n, k;
char s[(1 << 17)];
long long f[(1 << 17)], g[(1 << 17)], p[(1 << 17)];
long long quickpow(long long x, long long y) {
  long long cur = x, res = 1;
  for (; y; y >>= 1, cur = cur * cur % 1000000007)
    if (y & 1) res = res * cur % 1000000007;
  return res;
}
long long inv(long long x) { return quickpow(x, 1000000007 - 2); }
void calc(int k) {
  f[k] = 1;
  for (long long i = k + 1; i <= n; i++)
    f[i] = f[i - 1] * i % 1000000007 * inv(i - k) % 1000000007;
}
void init() {
  g[0] = 1;
  for (long long i = 1; i <= n; i++) g[i] = g[i - 1] * 10 % 1000000007;
}
int main() {
  cin >> n >> k >> s;
  for (int i = 0; i < n; i++) s[i] -= 48;
  if (k == 0) {
    long long res = 0;
    for (int i = 0; i < n; i++) res = res * 10 + s[i], res %= 1000000007;
    cout << res << endl;
  } else {
    init();
    calc(k);
    long long res = 0;
    for (int i = k; i < n; i++)
      res += g[n - i - 1] * f[i] % 1000000007 * s[i] % 1000000007,
          res %= 1000000007;
    calc(k - 1);
    for (int i = n - 2; i >= k - 1; i--)
      p[i] = p[i + 1] + g[n - i - 2] * f[i] % 1000000007, p[i] %= 1000000007;
    for (int i = 0; i < n - 1; i++)
      res += (long long)s[i] * p[max(k - 1, i)] % 1000000007, res %= 1000000007;
    cout << res << endl;
  }
  return 0;
}
