#include <bits/stdc++.h>
using namespace std;
int chh;
const int N = 100005, MOD = 1000000007;
int n, m;
int f[N], inv[N], finv[N], ten[N];
int cal(int n, int m) {
  if (!(m >= 0 && m <= n)) return 0;
  return (long long)f[n] * finv[m] % MOD * finv[n - m] % MOD;
}
char s[N];
int a[N];
int main() {
  ten[0] = 1;
  for (int i = (1); i <= (100000); i++)
    ten[i] = (long long)ten[i - 1] * 10 % MOD;
  inv[1] = 1;
  for (int i = (2); i <= (100000); i++)
    inv[i] = (long long)(MOD - MOD / i) * inv[MOD % i] % MOD;
  f[0] = finv[0] = 1;
  for (int i = (1); i <= (100000); i++) {
    f[i] = (long long)f[i - 1] * i % MOD;
    finv[i] = (long long)finv[i - 1] * inv[i] % MOD;
  }
  int ans, tmp;
  while (~scanf("%d %d", &n, &m)) {
    scanf("%s", s);
    for (int i = 0; i < (n); i++) a[i] = s[i] - '0';
    ans = 0;
    for (int i = 0; i < (n); i++)
      ans = (ans + (long long)a[i] * ten[n - 1 - i] * cal(i, m)) % MOD;
    tmp = 0;
    for (int i = (n - 2); i >= (0); i--) {
      tmp = (tmp + (long long)ten[n - 2 - i] * cal(i, m - 1)) % MOD;
      ans = (ans + (long long)tmp * a[i]) % MOD;
    }
    printf("%d\n", ans);
  }
  return 0;
}
