#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const int MAX_N = 110000;
int n, k;
int a[MAX_N];
int s[MAX_N];
long long fact[MAX_N];
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
pair<long long, long long> extgcd(long long a, long long b) {
  if (b == 0) {
    return make_pair(1, 0);
  } else {
    long long x, y;
    tie(x, y) = extgcd(b, a % b);
    return make_pair(y, x - (a / b) * y);
  }
}
long long mod_inverse(long long a, long long m) {
  long long x, y;
  tie(x, y) = extgcd(a, m);
  return (m + x % m) % m;
}
long long comb(long long n, long long r) {
  if (n < 0 || r < 0 || r > n) return 0;
  return fact[n] * mod_inverse(fact[n - r], MOD) % MOD *
         mod_inverse(fact[r], MOD) % MOD;
}
int main() {
  fact[0] = 1;
  for (int i = 1; i < MAX_N; i++) {
    fact[i] = i * fact[i - 1] % MOD;
  }
  scanf("%d%d", &n, &k);
  for (int i = 0; i < n; i++) {
    char c;
    scanf(" %c", &c);
    a[i] = c - '0';
    s[i + 1] = c - '0';
  }
  if (k == 0) {
    long long r = 0;
    for (int i = 0; i < n; i++) {
      r = (10 * r + a[i]) % MOD;
    }
    cout << r << endl;
    return 0;
  }
  for (int i = 0; i < n; i++) {
    s[i + 1] += s[i];
  }
  long long r = 0;
  long long t = 0;
  long long x1 = 0, x2 = 0;
  long long c = 1;
  for (int i = 0; i < n; i++) {
    t = (10 * t + (s[n] - s[i])) % MOD;
    x1 = (x1 * 10 + a[i]) % MOD;
    x2 = (x2 + c * a[n - 1 - i]) % MOD;
    long long one = (x1 + x2) % MOD;
    long long two = (t + MOD - x1 + MOD - x2) % MOD;
    r += (one * comb(n - 2 - i, k - 1) % MOD +
          two * comb(n - 3 - i, k - 2) % MOD) %
         MOD;
    r %= MOD;
    t = (t + MOD - x2) % MOD;
    c = c * 10 % MOD;
  }
  cout << r << endl;
}
