#include <bits/stdc++.h>
const int MaxN = 1e5;
const int Pt = 1e9 + 7;
using namespace std;
int a[MaxN + 5], n, k;
long long p[MaxN + 5], res[MaxN + 5];
long long qwr(long long x, long long y) {
  x = x % Pt;
  long long r = 1;
  while (y != 0) {
    if (y & 1) r = r * x % Pt;
    y >>= 1;
    x = x * x % Pt;
  }
  return r % Pt;
}
long long C(long long x, long long y) {
  if (y > x) return 0;
  long long r = p[x] * qwr(p[y], Pt - 2) % Pt;
  r = r * qwr(p[x - y], Pt - 2) % Pt;
  return r;
}
void Init() {
  p[0] = 1;
  for (int i = 1; i <= n; i++) scanf("%1d", &a[i]);
  for (int i = 1; i <= n; i++) p[i] = (p[i - 1] * i) % Pt;
  long long q = 1;
  res[0] = (q * C(n - 2, k - 1)) % Pt;
  for (int i = 1; i <= n; i++) {
    q = q * 10 % Pt;
    res[i] = (res[i - 1] + q * C(n - i - 2, k - 1)) % Pt;
  }
}
void Solve() {
  long long ans = 0;
  for (int i = 1; i <= n; i++) {
    long long res1 =
        (a[i] * (res[n - i - 1] + C(i - 1, k) * qwr(10, n - i) % Pt) % Pt) % Pt;
    ans = (ans + res1) % Pt;
  }
  printf("%I64d\n", ans);
}
int main() {
  while (~scanf("%d%d", &n, &k)) {
    Init();
    Solve();
  }
}
