#include <bits/stdc++.h>
using namespace std;
const int i = 1 << 15;
int t, s[10000], s1[10000], d1[10000], g[100000];
long long h[100000], d[i], p = 1000000007;
void bv(int w) {
  long long c = 1, v = s[w];
  int e;
  for (e = d1[w]; e; e >>= 1) {
    if ((e & 1) == 1) c = (c * v) % p;
    v = (v * v) % p;
  }
  d[w + (i >> 1)] = c;
  for (w = (w + (i >> 1)) >> 1; w; w >>= 1)
    d[w] = (d[w << 1] * d[(w << 1) + 1]) % p;
}
void l(int w, int y) {
  int e;
  for (e = 0; s1[e] <= w; e++)
    if (w % s[e] == 0) {
      do {
        w /= s[e];
        d1[e] += y;
      } while (w % s[e] == 0);
      bv(e);
    }
  if (w > 1) {
    d1[g[w]] += y;
    bv(g[w]);
  }
}
int main() {
  int q, w, e, r, y, c, v;
  long long ans = 0, h1[100000];
  char a[100001];
  bool a1[100000];
  t = 1;
  s[0] = 2;
  s1[0] = 4;
  d1[0] = 0;
  g[2] = 0;
  for (w = 3; w < 100000; w += 2) a1[w] = 1;
  for (w = 3; w < 100000; w += 2)
    if (a1[w]) {
      s[t] = w;
      g[w] = t;
      d1[t] = 0;
      if (w < 350) {
        s1[t] = w * w;
        for (e = s1[t], r = w << 1; e < 100000; e += r) a1[e] = 0;
      }
      t++;
    }
  for (w = 1; w < i; w++) d[w] = 1;
  scanf("%d%d%s", &q, &y, a);
  h[0] = 1;
  for (w = 1; w < 100000; w++) h[w] = (h[w - 1] * 10) % p;
  for (w = y; w < q; w++) {
    ans = (ans + ((h[q - w - 1] * d[1]) % p) * ((long long)(a[w] - 48))) % p;
    l(w + 1, 1);
    l(w + 1 - y, -1);
  }
  h1[0] = a[0] - 48;
  for (w = 1; w < q; w++) h1[w] = h1[w - 1] + a[w] - 48;
  for (w = 1; w < i; w++) d[w] = 1;
  for (w = 0; w < t; w++) d1[w] = 0;
  c = y - 1;
  v = y - 1;
  if (y > 0)
    for (w = y - 1; w < q - 1; w++) {
      ans = (ans + ((h[q - w - 2] * d[1]) % p) * ((long long)h1[w])) % p;
      c++;
      l(c, 1);
      l(c - v, -1);
    }
  cout << ans;
  return 0;
}
