#include <bits/stdc++.h>
using namespace std;
char IO;
inline long long rd() {
  long long res = 0, f = 1;
  while (IO = getchar(), IO < 48 || IO > 57)
    if (IO == '-') f = 0;
  do res = (res << 3) + (res << 1) + (IO ^ 48);
  while (IO = getchar(), IO >= 48 && IO <= 57);
  if (f) return res;
  return -res;
}
const long long P = 1e9 + 7, M = 1e5 + 5;
long long fac[M], pw[M], inv[M];
char str[M];
long long Pow(long long a, long long b) {
  long long res = 1;
  for (; b; b >>= 1, a = a * a % P)
    if (b & 1) res = res * a % P;
  return res;
}
void init() {
  fac[0] = pw[0] = 1;
  for (long long i = 1, iend = M - 5; i <= iend; ++i) {
    fac[i] = fac[i - 1] * i % P;
    pw[i] = pw[i - 1] * 10 % P;
  }
  inv[M - 5] = Pow(fac[M - 5], P - 2);
  for (long long i = M - 5, iend = 1; i >= iend; --i)
    inv[i - 1] = inv[i] * i % P;
}
long long C(long long n, long long m) {
  if (n < 0 || m < 0 || n < m) return 0;
  return fac[n] * inv[m] % P * inv[n - m] % P;
}
int main() {
  init();
  long long n = rd(), m = rd(), s = 0, ans = 0;
  scanf("%s", str + 1);
  for (long long i = n, iend = 1; i >= iend; --i) {
    ans = (ans + (s + C(i - 1, m) * pw[n - i]) * (str[i] - '0') % P) % P;
    s = (s + C(i - 2, m - 1) * pw[n - i] % P);
  }
  cout << ans << endl;
}
