#include <bits/stdc++.h>
using namespace std;
const int MAX = 100010;
const long long MOD = 1000000007;
long long fact[MAX + 5], ifact[MAX + 5];
long long fastexp(long long base, long long expo) {
  long long res = 1;
  while (expo) {
    if (expo & 1) res = (res * base) % MOD;
    base *= base;
    base %= MOD;
    expo >>= 1;
  }
  return res;
}
void factorial(int N) {
  fact[0] = 1;
  ifact[0] = 1;
  for (int i = 1; i <= N; i++) {
    fact[i] = (i * fact[i - 1]) % MOD;
    ifact[i] = fastexp(fact[i], MOD - 2);
  }
}
long long C(int N, int K) {
  if (K > N || K < 0) return 0;
  return (((fact[N] * ifact[K]) % MOD) * ifact[N - K]) % MOD;
}
long long S[100010];
long long p10[100010];
int main() {
  ios_base::sync_with_stdio(false);
  int n, k;
  string D;
  cin >> n >> k;
  cin >> D;
  factorial(n);
  p10[0] = 1;
  for (int i = 0; i < n; ++i) {
    if (i)
      S[i] = S[i - 1] + (D[i] - '0');
    else
      S[i] = (D[i] - '0');
    p10[i + 1] = (p10[i] * 10) % MOD;
  }
  long long ans = 0;
  for (int L = 1; L <= n; L++) {
    long long T = (p10[L - 1] * C(n - L - 1, k - 1)) % MOD;
    T = T * (S[n - L - 1]);
    T %= MOD;
    ans += T;
    if (ans >= MOD) ans -= MOD;
  }
  for (int pos = 0; pos <= n - 1; pos++) {
    long long T = (p10[n - pos - 1] * C(pos, k)) % MOD;
    T = (T * (D[pos] - '0')) % MOD;
    ans += T;
    if (ans >= MOD) ans -= MOD;
  }
  cout << ans << "\n";
  return 0;
}
