#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 100 * 1000 + 123, D = 1000 * 1000 * 1000 + 7;
inline long long pow(long long x, long long y) {
  long long ret = 1;
  for (; y; x = x * x % D, y >>= 1)
    if (y & 1) ret = ret * x % D;
  return ret;
}
long long n, k, f[MAXN], ivf[MAXN], ans, pd[MAXN], pt[MAXN];
string s;
inline long long ent(long long x, long long y) {
  return (x >= y ? f[x] * ivf[x - y] % D * ivf[y] % D : 0);
}
int32_t main() {
  f[0] = 1;
  for (long long i = 1; i < MAXN; i++) f[i] = f[i - 1] * i % D;
  ivf[MAXN - 1] = pow(f[MAXN - 1], D - 2);
  for (long long i = MAXN - 2; ~i; i--) ivf[i] = ivf[i + 1] * (i + 1) % D;
  pt[0] = 1;
  for (long long i = 1; i < MAXN; i++) pt[i] = pt[i - 1] * 10 % D;
  cin >> n >> k >> s;
  for (long long i = 0; i < n - k; i++)
    pd[i] = ((i > 0 ? pd[i - 1] : 0) + ent(n - 2 - i, k - 1) * pt[i] % D) % D;
  for (long long i = max(n - k, 1ll); i < n; i++) pd[i] = pd[i - 1];
  reverse(s.begin(), s.end());
  for (long long i = 1; i < n; i++)
    ans = (ans + (pd[i - 1] * (s[i] - '0') % D) +
           (ent(n - 1 - i, k) * (s[i] - '0') * pt[i] % D)) %
          D;
  ans = (ans + (s[0] - '0') * ent(n - 1, k) % D) % D;
  cout << ans;
  return 0;
}
