#include <bits/stdc++.h>
using namespace std;
int n, k;
char str[123456];
long long poww10[123456] = {1}, fct[123456] = {1}, spc[123456], spc2[123456],
          fnl[123456], fnl2[123456], ans;
pair<long long, long long> finv(long long a, long long b) {
  if (b == 0) return make_pair(1, 0);
  long long qt = a / b, r = a % b;
  pair<long long, long long> tmp = finv(b, r);
  return make_pair(tmp.second, ((tmp.first - qt * tmp.second) % 1000000007LL +
                                1000000007LL) %
                                   1000000007LL);
}
int main() {
  scanf("%d %d %s", &n, &k, str);
  for (int i = (1); i < (123456); i++)
    poww10[i] = (10 * poww10[i - 1]) % 1000000007LL;
  for (int i = (1); i < (123456); i++) fct[i] = (i * fct[i - 1]) % 1000000007LL;
  if (k)
    for (int i = (k - 1); i < (n); i++)
      spc[i] =
          ((((fct[i] * finv(fct[k - 1], 1000000007LL).first) % 1000000007LL) *
            finv(fct[i - k + 1], 1000000007LL).first) %
           1000000007LL);
  for (int i = (k); i < (n); i++)
    spc2[i] = ((((fct[i] * finv(fct[k], 1000000007LL).first) % 1000000007LL) *
                finv(fct[i - k], 1000000007LL).first) %
               1000000007LL);
  if (k)
    for (int i = (k); i < (n); i++)
      fnl[i] = (spc[i - 1] * poww10[n - i - 1]) % 1000000007LL;
  for (int i = (k); i < (n); i++)
    fnl2[i] = (spc2[i] * poww10[n - i - 1]) % 1000000007LL;
  long long tmp = 0;
  if (k)
    for (int i = (k); i < (n); i++) tmp = (tmp + fnl[i]) % 1000000007LL;
  tmp = (tmp + fnl2[0]) % 1000000007LL;
  for (int i = (0); i < (n); i++) {
    ans = (ans + tmp * (str[i] - '0')) % 1000000007LL;
    if (k) tmp = (tmp - fnl[i + 1] + 1000000007LL) % 1000000007LL;
    if (i != n - 1)
      tmp = (tmp - fnl2[i] + fnl2[i + 1] + 1000000007LL) % 1000000007LL;
  }
  printf("%lld\n", ans);
  return 0;
}
