#include <bits/stdc++.h>
const long long MAX = 1e5 + 7;
const long long mod = 1e9 + 7;
const long long inf = 0xc0c0c0c0;
const long long INF = 0x3f3f3f3f;
using namespace std;
long long Fact[MAX];
long long P10[MAX];
void init() {
  Fact[0] = 1;
  P10[0] = 1;
  for (long long i = 1; i < MAX; i++) {
    Fact[i] = Fact[i - 1] * i % mod;
    P10[i] = P10[i - 1] * 10 % mod;
  }
}
long long QPow(long long base, long long po) {
  long long ans = 1;
  while (po) {
    if (po & 1) ans = ans * base % mod;
    base = base * base % mod;
    po >>= 1;
  }
  return ans;
}
long long C(long long big, long long small) {
  long long U = Fact[big];
  long long D = Fact[small] * Fact[big - small] % mod;
  return U * QPow(D, mod - 2) % mod;
}
long long N, K;
char in[MAX];
long long sum[MAX];
int main() {
  init();
  cin >> N >> K >> in;
  sum[0] = 0;
  long long tool = 1;
  long long i;
  for (i = 1; i <= N - K; i++) {
    long long temp = tool * C(N - 1 - i, K - 1) % mod;
    tool = tool * 10 % mod;
    sum[i] = (sum[i - 1] + temp) % mod;
  }
  long long ans = 0;
  long long p = N - K;
  for (i = 0; i < N; i++) {
    long long temp = in[i] - '0';
    if (p < N - 1 - i) {
      temp = temp * sum[p] % mod;
    } else {
      long long m = C(i, K) * P10[N - 1 - i] % mod;
      temp = (sum[N - i - 1] + m) % mod * temp % mod;
    }
    ans = (ans + temp) % mod;
  }
  cout << ans;
  return 0;
}
