#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T poww(T b, T p) {
  long long a = 1;
  while (p) {
    if (p & 1) {
      a = (a * b);
    }
    p >>= 1;
    b = (b * b);
  }
  return a;
}
template <class T>
inline T poww2(T b, int p) {
  T a = 1;
  while (p) {
    if (p & 1) {
      a = (a * b);
    }
    p >>= 1;
    b = (b * b);
  }
  return a;
}
template <class T>
inline T modpoww(T b, T p, T mmod) {
  if (p == 0 && b == 0) return 0;
  long long a = 1;
  while (p) {
    if (p & 1) {
      a = (a * b) % mmod;
    }
    p >>= 1;
    b = (b * b) % mmod;
  }
  return a % mmod;
}
long long fact[100010];
long long tens[100010];
long long nCr(int n, int r) {
  if (n < r) return 0;
  long long num = fact[n];
  long long denoInv = modpoww<long long>(fact[r], 1000000007 - 2, 1000000007);
  denoInv =
      (denoInv * modpoww<long long>(fact[n - r], 1000000007 - 2, 1000000007)) %
      1000000007;
  return (num * denoInv) % 1000000007;
}
void preProcess() {
  fact[0] = tens[0] = 1;
  for (int i = 1; i < 100010; i++) {
    fact[i] = (fact[i - 1] * i) % 1000000007;
    tens[i] = (tens[i - 1] * 10) % 1000000007;
  }
}
int main() {
  int i, j, k, n;
  preProcess();
  cin >> n >> k;
  string num;
  cin >> num;
  long long ans = 0;
  int csum[n + 1];
  csum[0] = num[0] - '0';
  for (i = 1; i < n; i++) {
    csum[i] = csum[i - 1] + num[i] - '0';
  }
  for (int l = 0; l <= n - 2; ++l) {
    long long tans = csum[n - 2 - l];
    tans = (tans * tens[l]) % 1000000007;
    tans = (tans * nCr(n - l - 2, k - 1)) % 1000000007;
    ans = (ans + tans) % 1000000007;
  }
  for (i = 0; i < n; i++) {
    long long tans = (tens[n - 1 - i] * 1LL * (num[i] - '0'));
    tans = (tans * nCr(i, k));
    ans = (ans + tans) % 1000000007;
  }
  cout << ans << endl;
}
