#include <bits/stdc++.h>
const int MAXN = 1e5 + 10;
const int MOD = 1e9 + 7;
namespace {
inline int add(int x) { return x >= MOD ? x - MOD : x; }
inline int sub(int x) { return x < 0 ? x + MOD : x; }
inline int mul(int x, int y) { return (long long)x * y % MOD; }
inline int pwr(int x, int y) {
  int ans = 1;
  for (; y; y >>= 1, x = mul(x, x)) {
    if (y & 1) ans = mul(ans, x);
  }
  return ans;
}
}  // namespace
int n, k;
char s[MAXN];
int fact[MAXN], invf[MAXN], pw[MAXN];
int sum[MAXN], sum2[MAXN];
int choose(int x, int y) {
  return (x < y || y < 0) ? 0 : mul(fact[x], mul(invf[y], invf[x - y]));
}
int main() {
  scanf("%d%d", &n, &k);
  scanf("%s", s + 1);
  fact[0] = invf[0] = pw[0] = 1;
  for (int i = 1; i <= n; i++) {
    fact[i] = mul(fact[i - 1], i);
    invf[i] = pwr(fact[i], MOD - 2);
    pw[i] = mul(pw[i - 1], 10);
  }
  for (int i = 1; i <= n; i++) {
    sum[i] = add(mul(sum[i - 1], 10) + s[i] - '0');
  }
  for (int i = 1; i <= n; i++) {
    sum2[i] = add(sum2[i - 1] + sum[i]);
  }
  int ans = 0;
  for (int i = 1; i < n - 1; i++) {
    int val = sub(sub(sum2[n - 1] - sum2[i]) -
                  mul(pw[i], sub(sum2[n - i - 1] - sum2[0])));
    ans = add(ans + mul(val, choose(n - i - 2, k - 2)));
  }
  for (int i = 1; i < n; i++) {
    int val = add(sum[i] + sub(sum[n] - mul(sum[n - i], pw[i])));
    ans = add(ans + mul(val, choose(n - i - 1, k - 1)));
  }
  if (k == 0) {
    ans = add(ans + sum[n]);
  }
  printf("%d\n", ans);
}
