#include <bits/stdc++.h>
using namespace std;
int x[110000];
char str[110000];
long long tail[110000], a[110000], b[110000], c[110000], sum[110000],
    cm1[110000], cm2[110000];
int n, m;
const long long MOD = 1000000007L;
long long mod_reset(long long x) { return (x % MOD + MOD) % MOD; }
void extgcd(long long a, long long b, long long &x, long long &y) {
  if (b == 0) {
    x = 1L;
    y = 0L;
    return;
  }
  long long div = a / b;
  extgcd(b, a % b, y, x);
  y = mod_reset(y - div * x % MOD);
}
long long get_antimul(long long a) {
  long long x, y;
  extgcd(a, MOD, x, y);
  return x;
}
void conduct() {
  long long ans;
  scanf("%s", str);
  for (int i = 0; i < n; ++i) x[i + 1] = str[i] - '0';
  if (m == 0) {
    ans = 0L;
    for (int i = 1; i <= n; ++i) ans = (ans * 10 + x[i]) % MOD;
    cout << ans << endl;
    return;
  }
  cm1[n - m] = cm2[n - m] = 1;
  for (int i = n - m; i; --i) {
    long long ref = get_antimul(n - i - m + 1);
    cm1[i - 1] = (cm1[i] * (n - i)) % MOD * ref % MOD;
    cm2[i - 1] = (cm2[i] * (n - i - 1)) % MOD * ref % MOD;
  }
  tail[0] = 0L;
  for (int i = 1; i <= n; ++i) tail[i] = tail[i - 1] + x[n - i + 1];
  a[0] = b[0] = sum[0] = ans = 0L;
  c[0] = 1L;
  for (int i = 1; i <= n - m; ++i) {
    a[i] = (a[i - 1] * 10 + x[i]) % MOD;
    c[i] = c[i - 1] * 10 % MOD;
    b[i] = (b[i - 1] + c[i - 1] * x[n - i + 1]) % MOD;
    sum[i] = (mod_reset(sum[i - 1] - b[i - 1]) * 10 + tail[n - i + 1]) % MOD;
    ans = (ans + mod_reset(sum[i] - a[i] - b[i]) * cm2[i] +
           (a[i] + b[i]) * cm1[i]) %
          MOD;
  }
  cout << ans << endl;
}
int main() {
  while (scanf("%d%d", &n, &m) != EOF) conduct();
  return 0;
}
