#include <bits/stdc++.h>
using namespace std;
double sqr(double x) { return x * x; }
double distsqr(double x, double y, double a, double b) {
  return sqr((x - a)) + sqr((y - b));
}
double cosine_angle(double a, double b, double c) {
  return (double)(sqr(a) + sqr(b) - sqr(c)) / ((double)2.0 * a * b);
}
template <class T>
T Maximum(T a, T b) {
  return a > b ? a : b;
}
template <class T>
T Minimum(T a, T b) {
  return a < b ? a : b;
}
template <class T>
T GCD(T a, T b) {
  if (!b) return a;
  return GCD(b, a % b);
}
template <class T>
void SWAP(T &a, T &b) {
  T temp = a;
  a = b;
  b = temp;
  return;
}
template <class T>
T BigMod(T a, T n, T mod) {
  if (!n) return (T)1 % mod;
  long long int power = BigMod(a, n >> 1, mod);
  power %= mod;
  power *= power;
  power %= mod;
  if (n & 1) power *= a % mod, power %= mod;
  return power;
}
template <class T>
T ExtendedEuclid(T a, T b, T c) {
  if (!a) return 0;
  return (b * ExtendedEuclid(b % a, a, -c) + c) / a;
}
template <class T>
T ModInverse(T a, T m) {
  return ((ExtendedEuclid(a, m, (T)GCD(a, m))) % (m) + (m)) % (m);
}
long long int valk[100010], valk_1[100010], cval[100010];
void Processsing(int n, int k) {
  int i;
  long long int power, temp;
  if (k > 0) valk_1[k - 1] = 1;
  for (i = k, power = 1; i < n; i++) {
    if (i == k)
      valk[i] = 1;
    else {
      valk[i] = valk[i - 1] * i;
      valk[i] %= 1000000007;
      valk[i] *= ModInverse((long long int)(i - k), (long long int)1000000007);
      valk[i] %= 1000000007;
    }
    valk_1[i] = valk_1[i - 1] * i;
    valk_1[i] %= 1000000007;
    valk_1[i] *=
        ModInverse((long long int)(i - k + 1), (long long int)1000000007);
    valk_1[i] %= 1000000007;
  }
  for (i = 0; i < n - k; i++) {
    if (i)
      power *= 10;
    else
      power = 1;
    power %= 1000000007;
    temp = valk_1[n - 2 - i] * power;
    temp %= 1000000007;
    if (i)
      cval[i] = cval[i - 1] + temp;
    else
      cval[i] = temp;
    cval[i] %= 1000000007;
  }
}
int main() {
  int i, n, k;
  char c;
  long long int counts, temp;
  scanf("%d %d", &n, &k);
  Processsing(n, k);
  for (i = counts = 0; i < n; i++) {
    scanf(" %c", &c);
    c -= '0';
    if (i < k)
      counts += cval[n - k - 1] * (int)c;
    else {
      temp = cval[n - 2 - i] + valk[i] * BigMod((long long int)10,
                                                (long long int)(n - 1 - i),
                                                (long long int)1000000007);
      temp %= 1000000007;
      temp *= (int)c;
      temp %= 1000000007;
      counts += temp;
    }
    counts %= 1000000007;
  }
  printf("%I64d\n", counts);
  return 0;
}
