#include <bits/stdc++.h>
using namespace std;
const int kN = 100 * 1000 + 10;
const int kMod = 1000 * 1000 * 1000 + 7;
long long Power(long long n, int k) {
  long long res = 1;
  long long carry = n;
  while (k) {
    if (k & 1) res = res * carry % kMod;
    carry = carry * carry % kMod;
    k >>= 1;
  }
  return res;
}
long long Inv(long long n) {
  long long res = Power(n, kMod - 2);
  if (res * n % kMod != 1) {
    cout << "BAD" << endl;
  }
  return Power(n, kMod - 2);
}
long long cnk0[kN], cnk1[kN];
long long pows[kN];
void ComputeCNK(int n, int k) {
  --k;
  cnk0[k] = 1;
  for (int i = k + 1; i <= n; ++i)
    cnk0[i] = cnk0[i - 1] * i % kMod * Inv(i - k) % kMod;
  ++k;
  cnk1[k] = 1;
  for (int i = k + 1; i <= n; ++i)
    cnk1[i] = cnk1[i - 1] * i % kMod * Inv(i - k) % kMod;
}
long long sums[kN];
void ComputeSums(const string& s) {
  sums[0] = 0;
  pows[0] = 1;
  for (int i = 0; i < s.size(); ++i) {
    sums[i + 1] = sums[i] + s[i] - '0';
    pows[i + 1] = pows[i] * 10 % kMod;
  }
}
long long Value(const string& s) {
  long long res = 0;
  for (int i = 0; i < s.size(); ++i) {
    res = (res * 10 + s[i] - '0') % kMod;
  }
  return res;
}
int main() {
  std::ios_base::sync_with_stdio(false);
  string s;
  int n, k;
  cin >> n >> k >> s;
  if (k == 0) {
    cout << Value(s);
    return 0;
  }
  ComputeCNK(n, k);
  ComputeSums(s);
  long long res = 0;
  for (int p = 0; p < n; ++p) {
    long long carry = sums[n - p - 1] * cnk0[n - p - 2] % kMod +
                      (s[n - p - 1] - '0') * cnk1[n - p - 1] % kMod;
    carry %= kMod;
    res = (res + carry * pows[p]) % kMod;
    res %= kMod;
  }
  cout << res;
  return 0;
}
