#include <bits/stdc++.h>
using namespace std;
int n, m;
char digit[100005];
long long fac[100005], inv[100005], gob[100005];
long long pow(long long a, int b) {
  if (b == 0) return 1;
  if (b == 1) return a;
  if (b & 1) {
    long long s = pow(a, b >> 1);
    return ((s * s) % 1000000007 * a) % 1000000007;
  }
  long long s = pow(a, b >> 1);
  return (s * s) % 1000000007;
}
inline long long comb(int a, int b) {
  return ((fac[a] * inv[b]) % 1000000007 * inv[a - b]) % 1000000007;
}
int main() {
  fac[0] = 1;
  inv[0] = 1;
  gob[0] = 1;
  for (int i = 1; i <= 100000; i++) {
    gob[i] = gob[i - 1] * 10;
    gob[i] %= 1000000007;
    fac[i] = fac[i - 1] * i;
    fac[i] %= 1000000007;
    inv[i] = pow(fac[i], 1000000007 - 2);
  }
  scanf("%d %d", &n, &m);
  scanf("%s", digit);
  if (m == 0) {
    long long sum = 0;
    for (int i = 0; i < n; i++) {
      sum += gob[n - i - 1] * (digit[i] - '0');
      sum %= 1000000007;
    }
    printf("%I64d\n", sum);
    return 0;
  }
  long long print = 0, sum = 0;
  int last;
  for (int i = 0; i < n; i++) {
    if (n - 2 - i < m - 1) break;
    sum += comb(n - 2 - i, m - 1) * gob[i];
    sum %= 1000000007;
    last = i;
  }
  for (int i = 0; i < n; i++) {
    if (i >= m) {
      sum -= (comb(n - 2 - last, m - 1) * gob[last]) % 1000000007;
      sum = (sum + 1000000007) % 1000000007;
      print +=
          (comb(n - 1 - last, m) * gob[last]) % 1000000007 * (digit[i] - '0');
      print %= 1000000007;
      last--;
    }
    print += sum * (digit[i] - '0');
    print %= 1000000007;
  }
  printf("%I64d\n", print);
  return 0;
}
