#include <bits/stdc++.h>
using namespace std;
const long long MAXN = 2e5;
const long long mod = 1e9 + 7;
long long N, K, ar[MAXN], dn[11][MAXN], p1[MAXN], p2[MAXN], ans, po[MAXN];
char er[MAXN];
long long f(long long a, long long b) {
  long long tmp = mod - 2, res = 1, cal = b;
  for (long long i = 0; i <= 31; i++) {
    if (tmp & (1ll << i)) res = res * cal % mod;
    cal = cal * cal % mod;
  }
  return res * a % mod;
}
int main() {
  scanf(" %lld %lld %s", &N, &K, er + 1);
  for (long long i = 1; i <= N; i++) ar[i] = er[i] - '0';
  p1[K - 1] = p2[K] = 1;
  for (long long i = K; i <= N; i++) {
    p1[i] = p1[i - 1] * i % mod;
    p1[i] = f(p1[i], i - K + 1);
  }
  for (long long i = K + 1; i <= N; i++) {
    p2[i] = p2[i - 1] * i % mod;
    p2[i] = f(p2[i], i - K);
  }
  po[0] = 1;
  for (int i = 1; i <= N; i++) po[i] = po[i - 1] * 10 % mod;
  for (long long i = 1; i <= 9; i++)
    for (long long j = 1, k = i; j <= N; j++, k *= 10, k %= mod)
      dn[i][j] = (dn[i][j - 1] + p1[N - j - 1] * k) % mod;
  for (long long i = 1; i <= N; i++) {
    long long tmp = min(N - i, N - K);
    ans = (ans + dn[ar[i]][tmp]) % mod;
    if (i - 1 >= K) ans = (ans + p2[i - 1] * ar[i] * po[N - i]) % mod;
  }
  if (ans < 0) ans += mod;
  cout << ans << endl;
  return 0;
}
