#include <bits/stdc++.h>
using namespace std;
const int MAX = 200000;
const long long q = int(1e9) + 7;
int n, k;
long long a[MAX], ans, C[MAX], t[MAX], p, x;
char s[MAX];
long long sum(int i, int j) { return (a[j] - a[i - 1] + q) % q; }
long long power(long long a, int n) {
  long long res = 1;
  while (n > 0) {
    if (n & 1) res = (res * a) % q;
    n >>= 1;
    a = (a * a) % q;
  }
  return res;
}
int main() {
  scanf("%d %d", &n, &k);
  scanf("%s", &s);
  if (k == 0) {
    ans = 0;
    for (int i = 0; i < n; i++) ans = (ans * 10 + s[i] - 48) % q;
    printf("%lld", ans);
    return 0;
  }
  for (int i = 1; i < n - 1; i++) a[i] = a[i - 1] + s[i] - 48;
  p = 0;
  for (int i = 1, j = 0; i < n - 1; i++, j++)
    t[i] = (t[i - 1] * 10 + sum(i, n - 2) - p * 10 + q * q) % q,
    p = (power(10, j) * (s[n - i - 1] - 48) + p) % q;
  ans = 0;
  if (k >= 2) {
    k -= 2;
    C[k] = 1;
    for (int i = k + 1; i <= n; i++)
      C[i] = (((C[i - 1] * i) % q) * power(i - k, q - 2)) % q;
    for (int i = 1; i <= n - k + 2; i++) ans = (ans + t[i] * C[n - i - 2]) % q;
    k += 2;
  }
  k--;
  C[k] = 1;
  for (int i = k + 1; i <= n; i++)
    C[i] = (((C[i - 1] * i) % q) * power(i - k, q - 2)) % q;
  p = x = 0;
  k++;
  for (int i = 0, j = n - 1; i < n - k; i++, j--) {
    p = (p * 10 + s[i] - 48) % q;
    x = (power(10, i) * (s[j] - 48) + x) % q;
    ans = (ans + (p + x) * C[n - i - 2]) % q;
  }
  printf("%lld", ans);
}
