#include <bits/stdc++.h>
using namespace std;
const long long N = 1e5 + 1e3;
const long long p = 1e9 + 7;
long long a[N], fact[N], inv[N], base[N], ans = 0, sum[N];
inline long long read() {
  long long x = 0, s = 1;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') {
      s = -1;
    }
    ch = getchar();
  }
  while (isdigit(ch)) {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * s;
}
long long power(long long a, long long b) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a % p;
    a = a * a % p;
    b /= 2;
  }
  return ans;
}
long long C(long long n, long long m) {
  if (n > m) return 0;
  return fact[m] * inv[n] % p * inv[m - n] % p;
}
int main() {
  long long n = read(), k = read();
  for (long long i = 1; i <= n; i++) {
    char c = getchar();
    while (c < '0' || '9' < c) c = getchar();
    a[i] = c - '0';
    sum[i] = sum[i - 1] + a[i];
  }
  fact[0] = base[0] = 1;
  for (long long i = 1; i <= n; i++) {
    fact[i] = fact[i - 1] * i % p;
  }
  inv[n] = power(fact[n], p - 2);
  for (long long i = n - 1; i >= 0; i--) {
    inv[i] = inv[i + 1] * (i + 1) % p;
  }
  for (long long i = 1; i <= n; i++) {
    base[i] = base[i - 1] * 10ll % p;
  }
  for (long long i = 0; i < n; i++) {
    ans = (ans + sum[n - i - 1] * base[i] % p * C(k - 1, n - i - 2) % p) % p;
    ans = (ans + (sum[n - i] - sum[n - i - 1] + p) % p * base[i] % p *
                     C(k, n - i - 1) % p) %
          p;
  }
  printf("%lld\n", ans);
  return 0;
}
