#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
const int N = 1e5 + 5;
int fact[N], invf[N];
int power(int base, int exp) {
  int res = 1;
  while (exp) {
    if (exp & 1) res = res * (long long)base % MOD;
    base = base * (long long)base % MOD;
    exp >>= 1;
  }
  return res;
}
inline int choose(int n, int r) {
  if (!(r >= 0 && r <= n)) return 0;
  int num = fact[n];
  int den = invf[n - r] * (long long)invf[r] % MOD;
  return num * (long long)den % MOD;
}
int main() {
  fact[0] = 1;
  for (int i = 1; i < N; ++i) {
    fact[i] = i * (long long)fact[i - 1] % MOD;
  }
  for (int i = 0; i < N; ++i) invf[i] = power(fact[i], MOD - 2);
  int n, k;
  cin >> n >> k;
  string s;
  cin >> s;
  vector<int> B(N);
  for (int i = 1; i < N; ++i) {
    B[i] = choose(n - 1 - i, k - 1) * (long long)power(10, i - 1) % MOD;
    if (i > 1) {
      B[i] += B[i - 1];
      if (B[i] >= MOD) B[i] -= MOD;
    }
  }
  int answer = 0;
  for (int i = n - 1; i >= 0; --i) {
    int d = s[i] - '0';
    int right_blanks = n - 1 - i;
    int val = 0;
    if (right_blanks) {
      val += B[right_blanks] * (long long)d % MOD;
    }
    val += choose(n - 1 - right_blanks, k) * (long long)power(10, n - 1 - i) %
           MOD * (long long)d % MOD;
    if (val >= MOD) val -= MOD;
    answer += val;
    if (answer >= MOD) answer -= MOD;
  }
  cout << answer;
  return 0;
}
