#include <bits/stdc++.h>
using namespace std;
void gt(int &a, int b) {
  if (a < b) a = b;
}
string n2s(int a) {
  stringstream ss;
  ss << a;
  return ss.str();
}
string getKey(int v, int h) { return n2s(v) + "-" + n2s(h); }
long long w[500005], fact[500005], rfact[500005], f[500005]{0};
long long Pow(long long x, long long y) {
  long long ans = 1;
  for (; y; y /= 2) {
    if (y & 1) ans = ans * x % 1000000007;
    x = x * x % 1000000007;
  }
  return ans;
}
long long comb(long long k, long long n) {
  if (k > n) return 0;
  long long ans = fact[n] * rfact[k] % 1000000007;
  ans = ans * rfact[n - k] % 1000000007;
  return ans;
}
int main() {
  long long ans = 0;
  int n, k;
  string s;
  cin >> n >> k >> s;
  fact[0] = 1;
  rfact[0] = 1;
  for (int i = 1; i <= n; i++) {
    fact[i] = fact[i - 1] * i % 1000000007;
    rfact[i] = Pow(fact[i], 1000000007 - 2);
  }
  for (int i = 1; i <= n; i++)
    f[i] = (f[i - 1] + Pow(10, i - 1) * comb(k - 1, n - 1 - i)) % 1000000007;
  for (int i = 1; i <= n; i++)
    w[i] =
        (f[min(n - i, n - k)] + Pow(10, n - i) * comb(k, i - 1)) % 1000000007;
  for (int i = 1; i <= n; i++)
    ans = (ans + w[i] * (s[i - 1] - '0')) % 1000000007;
  cout << ans << endl;
  return 0;
}
