#include <bits/stdc++.h>
using namespace std;
int comb[2][100007], f[100007], p[100007];
int K, N, i, pu, c, d, ans, newC;
char str[100007];
void gcd(int A, int B, int &Inv, int &Ins) {
  int aux = 0;
  if (!B) {
    Inv = 1;
    Ins = 0;
    return;
  }
  gcd(B, A % B, Inv, Ins);
  aux = Inv;
  Inv = Ins;
  Ins = aux - Ins * (A / B);
}
int imod(int x) {
  int ans = 0, ins = 0;
  gcd(x, 1000000007, ans, ins);
  if (ans < 0) ans = 1000000007 + ans % 1000000007;
  return ans;
}
int main() {
  scanf("%d%d%s", &N, &K, (str + 1));
  --N;
  for (comb[0][K - 1] = 1, i = K; i <= N; ++i)
    comb[0][i] =
        (1ll * ((1ll * comb[0][i - 1] * imod(i - K + 1)) % 1000000007) * i) %
        1000000007;
  for (comb[1][K] = 1, i = K + 1; i <= N; ++i)
    comb[1][i] =
        (1ll * ((1ll * comb[1][i - 1] * imod(i - K)) % 1000000007) * i) %
        1000000007;
  for (i = 1, pu = 1; i <= N; ++i) {
    c = (1ll * comb[0][N - i] * pu) % 1000000007;
    f[i] = (f[i - 1] + c) % 1000000007;
    pu = (1ll * pu * 10) % 1000000007;
  }
  for (i = p[0] = 1; i <= N; ++i) p[i] = (1ll * p[i - 1] * 10) % 1000000007;
  for (i = 1; i <= N; ++i) {
    d = str[i] - '0';
    ans = (ans + 1ll * d * f[N - i + 1]) % 1000000007;
    ans =
        (ans + 1ll * d * ((1ll * comb[1][i - 1] * p[N + 1 - i]) % 1000000007)) %
        1000000007;
  }
  for (i = K + 1, newC = 1; i <= N; ++i) newC = (1ll * newC * i) % 1000000007;
  for (i = 1; i <= N - K; ++i) newC = (1ll * newC * imod(i)) % 1000000007;
  d = str[N + 1] - '0';
  ans = (ans + 1ll * d * newC) % 1000000007;
  printf("%d\n", ans);
  return 0;
}
