#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC target( \
    "avx,avx2,fma,sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
using namespace std;
long long MOD = 1e9 + 7;
long long st(long long t, long long id, long long mod) {
  long long res = 1, a = t, n = id;
  while (n) {
    if (n & 1) res = (res * a) % mod;
    a = (a * a) % mod;
    n >>= 1;
  }
  return res % mod;
}
long long del(long long a, long long b) {
  return (a * st(b, MOD - 2, MOD)) % MOD;
}
const int N = 300000;
long long fac[N];
long long ifac[N];
long long cnk(long long n, long long k) {
  if (k > n) return 0;
  return fac[n] * ifac[n - k] % MOD * ifac[k] % MOD;
}
long long ans[N];
long long ans2[N];
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0),
      cout << fixed << setprecision(20);
  long long n, k;
  cin >> n >> k;
  string s;
  cin >> s;
  if (k == 0) {
    long long sm = 0;
    long long kol = 0;
    for (int i = n - 1; i > -1; i--) {
      sm += st(10, kol, MOD) * (s[i] - '0');
      kol++;
      sm %= MOD;
    }
    cout << sm;
    return 0;
  }
  fac[0] = 1;
  for (int i = 1; i < N; i++) {
    fac[i] = (fac[i - 1] * i) % MOD;
  }
  ifac[N - 1] = del(1, fac[N - 1]);
  for (int i = N - 2; i > -1; i--) {
    ifac[i] = (ifac[i + 1] * (i + 1)) % MOD;
  }
  for (int i = 1; i < n; i++) {
    ans[i] = ans[i - 1] + (st(10, i - 1, MOD) * cnk(n - 1 - i, k - 1)) % MOD;
    ans[i] %= MOD;
  }
  for (int i = n - 1; i > -1; i--) {
    ans2[i] = ans2[i + 1] + (cnk(n - 1 - i, k - 1)) % MOD;
    ans2[i] %= MOD;
  }
  long long an = 0;
  for (int i = 0; i < n - k; i++) {
    an += (s[n - i - 1] - '0') *
          (ans[i + 1] + ans2[i + 2] * st(10, i, MOD) % MOD);
    an %= MOD;
  }
  long long sm = 0;
  for (int i = n - k; i < n; i++) {
    sm += (s[n - i - 1] - '0');
  }
  an += (sm * ans[n - 1]) % MOD;
  an %= MOD;
  cout << an;
}
