#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
const int N = 1e5 + 5;
long long C[N];
long long sum[N];
long long po[N];
char s[N];
int a[N];
void gcd(long long a, long long b, long long& d, long long& x, long long& y) {
  if (!b) {
    d = a;
    x = 1;
    y = 0;
  } else {
    gcd(b, a % b, d, y, x);
    y -= x * (a / b);
  }
}
long long inv(long long a, long long n) {
  long long d, x, y;
  gcd(a, n, d, x, y);
  return d == 1 ? (x + n) % n : -1;
}
int main() {
  int n, k;
  while (~scanf("%d%d", &n, &k)) {
    scanf("%s", s);
    for (int i = 0; i < n; i++) a[i] = s[i] - '0';
    long long ans = 0;
    po[0] = 1;
    for (int i = 1; i <= 100000; i++) po[i] = (po[i - 1] * 10) % mod;
    memset(C, 0, sizeof(C));
    C[k] = 1;
    for (int i = k + 1; i <= n; i++) {
      long long tp = inv((long long)i - k, mod);
      C[i] = (C[i - 1] * tp) % mod;
      C[i] = C[i] * i % mod;
    }
    for (int i = 0; i < n; i++) {
      long long tp = a[i] * po[n - 1 - i] % mod;
      tp = (tp * C[i]) % mod;
      ans = (ans + tp) % mod;
    }
    if (k == 0) {
      printf("%I64d\n", ans);
      continue;
    }
    k--;
    memset(C, 0, sizeof(C));
    C[k] = 1;
    for (int i = k + 1; i <= n; i++) {
      long long tp = inv((long long)i - k, mod);
      C[i] = (C[i - 1] * tp) % mod;
      C[i] = C[i] * i % mod;
    }
    for (int i = 0; i <= n - 2; i++) {
      long long tp = po[i] * C[n - i - 2] % mod;
      if (i == 0)
        sum[i] = tp;
      else
        sum[i] = (sum[i - 1] + tp) % mod;
    }
    for (int i = 0; i < n; i++) {
      if (n - 2 - i < 0) continue;
      ans = (ans + sum[n - 2 - i] * a[i] % mod) % mod;
    }
    printf("%I64d\n", ans);
  }
  return 0;
}
