#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 7;
long long n, k, f[N], a[N], ps[N], sum, M = 1e9 + 7, pw[N], pre[N], suf[N],
                                        mid[N];
long long power(long long a, long long b) {
  if (b == 0) return 1;
  long long t = power(a, b / 2);
  t = (t * t) % M;
  if (b % 2) t = (t * a) % M;
  return t;
}
long long ch(long long a, long long b) {
  if (a > b || a < 0) return 0;
  long long t = f[b];
  t = (t * power(f[a], M - 2)) % M;
  t = (t * power(f[b - a], M - 2)) % M;
  return t;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> k;
  pw[0] = 1;
  f[0] = 1;
  for (int i = 1; i <= n; i++) {
    char c;
    cin >> c;
    a[i] = c - '0';
    ps[i] = (ps[i - 1] + a[i]) % M;
    pw[i] = (pw[i - 1] * 10) % M;
    f[i] = (f[i - 1] * i) % M;
  }
  if (n == 1 || k == 0) {
    long long t = 0;
    for (int i = 1; i <= n; i++) {
      t = ((t * 10) + a[i]) % M;
    }
    cout << t;
    return 0;
  }
  for (int i = 1; i <= n; i++) pre[i] = ((pre[i - 1] * 10) + a[i]) % M;
  for (int i = n; i >= 1; i--) suf[i] = ((a[i] * pw[n - i]) + suf[i + 1]) % M;
  long long sec = 0;
  for (int i = 1; i <= n; i++) {
    mid[i] = ((ps[n - i] - a[1]) * pw[i - 1]) % M;
    mid[i] = (mid[i] + mid[i - 1]) % M;
    if (i >= 2) sec = ((sec * 10) + a[i]) % M;
    mid[i] = (mid[i] - sec) % M;
    if (i == n - 1) mid[i] = 0;
    if (i == n) mid[i] = suf[n - i + 1] = 0;
  }
  long long res = 0;
  for (int i = 1; i <= n; i++) {
    long long t = (mid[i] * ch(k - 2, n - i - 2)) % M;
    t = (t + (pre[i] + suf[n - i + 1]) * ch(k - 1, n - i - 1)) % M;
    res = (res + t) % M;
  }
  cout << ((res % M) + M) % M;
  return 0;
}
