#include <bits/stdc++.h>
using namespace std;
const int maxn = 100005;
const long long mod = 1e9 + 7;
long long A[100005];
long long exGCD(long long a, long long b, long long &x, long long &y) {
  if (!b) {
    x = 1;
    y = 0;
    return a;
  }
  long long gcd = exGCD(b, a % b, x, y);
  long long tx = x;
  x = y;
  y = tx - (a / b) * y;
  return gcd;
}
long long inv(long long a) {
  long long x, y;
  exGCD(a, mod, x, y);
  return (x % mod + mod) % mod;
}
long long C(long long a, long long b) {
  long long tmp = inv(A[b]);
  return (((A[a] * inv(A[b])) % mod) * inv(A[a - b])) % mod;
}
long long sum[100005], t[100005];
int a[100005];
int main() {
  t[0] = A[0] = 1;
  for (int i = 1; i < 100005; i++) {
    A[i] = (A[i - 1] * i) % mod;
    t[i] = (t[i - 1] * 10) % mod;
  }
  int n, k;
  cin >> n >> k;
  for (int i = 1; i <= n; i++) {
    scanf("%1d", &a[i]);
    sum[i] = a[i] + sum[i - 1];
  }
  long long ret = 0;
  for (int i = 0; i < n - k; i++) {
    long long p1 = (sum[n - i - 1] * C(n - 2 - i, k - 1)) % mod,
              p2 = (a[n - i] * C(n - 1 - i, k)) % mod;
    ret = (ret + (p1 + p2) * t[i]) % mod;
  }
  cout << ret << endl;
  return 0;
}
