#include <bits/stdc++.h>
using namespace std;
long long pw(long long a, long long b) {
  long long r = 1;
  while (b) {
    if (b & 1) r = (r * a) % 1000000007ll;
    a = (a * a) % 1000000007ll;
    b >>= 1;
  }
  return r;
}
long long inv(long long a) { return pw(a, 1000000007ll - 2); }
long long F[100005], IF[100005];
void pre() {
  F[0] = IF[0] = 1;
  for (int i = (1); i < (100005); i++) {
    F[i] = (F[i - 1] * i) % 1000000007ll;
    IF[i] = inv(F[i]);
  }
}
long long choose(int a, int b) {
  if (b > a) return 0;
  if (b < 0) return 0;
  return (((F[a] * IF[a - b]) % 1000000007ll) * IF[b]) % 1000000007ll;
}
long long v[100005];
int n, k;
char buf[100005];
int main() {
  pre();
  scanf("%d %d", &n, &k);
  scanf(" %s", buf);
  for (int j = (1); j < (100005); j++) {
    v[j] = v[j - 1];
    v[j] += ((choose(n - 1 - j, k - 1) * pw(10, j - 1)) % 1000000007ll);
    v[j] %= 1000000007ll;
  }
  long long res = 0;
  for (int i = n - 1; i >= 0; i--) {
    int l = n - 1 - i;
    int dig = buf[i] - '0';
    if (dig != 0) {
      res += v[l] * dig;
      res %= 1000000007ll;
      res += ((choose(n - 1 - l, k) * pw(10, l)) % 1000000007ll) * dig;
      res %= 1000000007ll;
    }
  }
  printf("%lld\n", res);
}
