#include <bits/stdc++.h>
using namespace std;
const int maxN = 200000;
const long long mod = 1000000007;
struct cl {
  int r;
  int c;
};
long long run() {
  long long n, k;
  cin >> n >> k;
  long long MINV[maxN];
  MINV[1] = 1;
  for (int i = 2; i <= n; ++i) {
    long long q = mod / i;
    MINV[i] = q * MINV[mod % i];
    MINV[i] %= mod;
    MINV[i] *= mod - 1;
    MINV[i] %= mod;
  }
  long long COMB[maxN];
  COMB[k - 1] = 1;
  for (int i = k; i <= n; ++i) {
    COMB[i] = COMB[i - 1] * i;
    COMB[i] %= mod;
    COMB[i] *= MINV[i - k + 1];
    COMB[i] %= mod;
  }
  long long POW[maxN];
  POW[0] = 1;
  for (int i = 1; i <= n; ++i) {
    POW[i] = POW[i - 1] * 10;
    POW[i] %= mod;
  }
  long long G[maxN];
  G[1] = COMB[n - 2];
  G[n] = 0;
  for (int i = 2; i < n; ++i) {
    G[i] = G[i - 1];
    if (n - i >= k) {
      G[i] += POW[i - 1] * COMB[n - i - 1];
      G[i] %= mod;
    }
    if (k >= 2 && n - i > k - 2) {
      long long coef = n - i >= k ? COMB[n - i] + (mod - COMB[n - i - 1]) : 1;
      coef %= mod;
      G[i] += POW[i - 2] * coef;
      G[i] %= mod;
    }
    if (n - i + 1 >= k) {
      long long more = POW[i - 2] * COMB[n - i];
      more %= mod;
      more = mod - more;
      G[i] += more;
      G[i] %= mod;
    }
  }
  long long F[maxN];
  F[1] = 1;
  for (int i = 1; i <= k; ++i) {
    F[1] *= (n - i);
    F[1] %= mod;
    F[1] *= MINV[i];
    F[1] %= mod;
  }
  for (int i = 2; i <= n; ++i) {
    F[i] = mod - G[i - 1];
    F[i] += F[i - 1];
    F[i] *= 10;
    F[i] += COMB[n - 2];
    F[i] %= mod;
  }
  string str;
  cin >> str;
  long long ret = 0;
  for (int i = 0; i < n; ++i) {
    long long more = F[n - i] * (str[i] - '0');
    more %= mod;
    ret += more;
    ret %= mod;
  }
  return ret;
}
int main() {
  long long ret = run();
  cout << ret << endl;
  return 0;
}
