#include <bits/stdc++.h>
using namespace std;
int n, k;
char c[100001], tmp;
long long t, ans, r[100001], tr[100001], rr[100001];
long long rv(int x) {
  if (x == 1) return 1;
  long long w = 1000000007 / x + 1;
  return rv(w * x - 1000000007) * w % 1000000007;
}
int main() {
  scanf("%d%d", &n, &k);
  scanf("%s", c);
  for (int i = (0); i <= ((n - 1) / 2); i++)
    tmp = c[i], c[i] = c[n - i - 1], c[n - i - 1] = tmp;
  tr[0] = 1;
  for (int i = (1); i <= (n); i++) tr[i] = tr[i - 1] * i % 1000000007;
  rr[n] = rv(tr[n]);
  for (int i = (1); i <= (n); i++)
    rr[n - i] = rr[n - i + 1] * (n - i + 1) % 1000000007;
  t = 1;
  for (int i = (1); i <= (n - k); i++)
    r[i] = (r[i - 1] + (tr[n - i - 1] * rr[k - 1] % 1000000007 *
                        rr[(n - i - 1) - (k - 1)] % 1000000007) *
                           t) %
           1000000007,
    t = t * 10 % 1000000007;
  for (int i = (n - k + 1); i <= (n); i++) r[i] = r[i - 1];
  t = 1;
  for (int i = (0); i <= (n - 1); i++) {
    ans = (ans + (c[i] - '0') * r[i]) % 1000000007;
    if (i < n - k)
      ans = (ans + (c[i] - '0') *
                       (tr[n - i - 1] * rr[k] % 1000000007 *
                        rr[(n - i - 1) - (k)] % 1000000007) *
                       t) %
            1000000007;
    t = t * 10 % 1000000007;
  }
  printf("%I64d\n", ans);
}
