#include <bits/stdc++.h>
using namespace std;
long long int fact[100000 + 10];
long long int cmn[100000 + 10];
int n, k;
char str[100000 + 10];
long long int ip(long long int a, long long int p) {
  if (!p) return 1;
  if (p & 1) return (a * ip(a, p - 1)) % 1000000007;
  long long int ret = ip(a, p / 2);
  return (ret * ret) % 1000000007;
}
long long int nCr(int n, int r) {
  if (!n && !r) return 1;
  if (n < r) return 0;
  if (n < 0 || r < 0) return 0;
  if (n == r) return 1;
  if (r == 0) return 1;
  long long int up = fact[n];
  long long int dwn = fact[r];
  dwn = (dwn * fact[n - r]) % 1000000007;
  dwn = ip(dwn, 1000000007 - 2);
  return (up * dwn) % 1000000007;
}
int main() {
  int i, j, dg;
  long long int nw, res = 0;
  fact[0] = 1;
  for (i = 1; i <= 100000; i++) fact[i] = (i * fact[i - 1]) % 1000000007;
  scanf("%d %d", &n, &k);
  scanf("%s", str);
  reverse(str, str + n);
  for (i = 0; i < n; i++) {
    nw = (nCr(n - 2 - i, k - 1) * ip(10, i)) % 1000000007;
    if (i)
      cmn[i] = (nw + cmn[i - 1]) % 1000000007;
    else
      cmn[i] = nw;
  }
  for (i = 0; i < n; i++) {
    dg = str[i] - '0';
    if (i) res = (res + dg * cmn[i - 1]) % 1000000007;
    nw = (nCr(n - 1 - i, k) * ip(10, i)) % 1000000007;
    nw = (nw * dg) % 1000000007;
    res = (res + nw) % 1000000007;
  }
  printf("%d\n", res);
  return 0;
}
