#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
const int MOD = 1000000007;
int n, nplus;
char s[100001];
int p[100000];
int digsum[100001];
int inv[100000];
int choose(int n, int k) {
  int ret = 1;
  for (int i = (0); i < (k); ++i)
    ret = (long long)ret * (n - i) % MOD * inv[i + 1] % MOD;
  return ret;
}
void run() {
  scanf("%d%d", &n, &nplus);
  scanf("%s", s);
  p[0] = 1;
  for (int i = (1); i < (n); ++i) p[i] = (long long)p[i - 1] * 10 % MOD;
  digsum[0] = 0;
  for (int i = (0); i < (n); ++i) digsum[i + 1] = digsum[i] + (s[i] - '0');
  inv[1] = 1;
  for (int i = (2); i < (n); ++i)
    inv[i] = (long long)(MOD - (MOD / i)) * inv[MOD % i] % MOD;
  int ret = 0, cur;
  cur = 1;
  for (int i = (nplus); i < (n); ++i) {
    ret = (ret + (long long)cur * (s[i] - '0') % MOD * p[n - i - 1]) % MOD;
    cur = (long long)cur * (i + 1) % MOD * inv[i - nplus + 1] % MOD;
  }
  if (nplus != 0) {
    cur = choose(n - 2, nplus - 1);
    for (int j = (0); j <= (n - 2); ++j) {
      ret = (ret + (long long)cur * p[j] % MOD * digsum[n - j - 1]) % MOD;
      if (j != n - 2)
        cur = (long long)cur * (n - j - nplus - 1) % MOD * inv[n - j - 2] % MOD;
    }
  }
  printf("%d\n", ret);
}
int main() {
  run();
  return 0;
}
