#include <bits/stdc++.h>
using namespace std;
long long int p = 1000000007;
long long int inv_fact[200000], d[200000], a[120000], fact[120000],
    store[120000];
long long int expo(long long int a, long long int b) {
  long long int temp = a, ans = 1;
  while (b > 0) {
    if (b % 2 == 1) {
      ans = (ans * temp) % p;
    }
    b = b / 2;
    temp = (temp * temp) % p;
  }
  return ans;
}
long long int inverse(long long int a) {
  long long int ans = expo(a, p - 2);
  return ans;
}
int main() {
  std::ios::sync_with_stdio(false);
  long long int t, i, j, temp, tmp, c1, c2, c3, c4, ans, n, k, er, l, temp1,
      temp2, temp3, sum, tempp;
  temp = 1;
  inv_fact[0] = 1;
  fact[0] = 1;
  for (i = 1; i <= 102000; i++) {
    temp = (temp * i) % p;
    inv_fact[i] = inverse(temp);
    fact[i] = temp;
  }
  cin >> n >> k;
  ans = 0;
  string s;
  cin >> s;
  for (i = 0; i < n; i++) {
    a[i] = s[i] - '0';
  }
  temp = 0;
  if (k == 0) {
    for (i = 0; i < n; i++) {
      temp = (temp * 10 + a[i]) % p;
    }
    ans = (ans + temp) % p;
    cout << ans << endl;
    return 0;
  }
  if (k == 1) {
    temp = 0;
    for (i = 0; i < n - 1; i++) {
      temp = (temp * 10 + a[i]) % p;
      ans = (ans + temp) % p;
    }
    er = 1;
    temp = 0;
    for (i = n - 1; i >= 1; i--) {
      temp = (a[i] * er + temp) % p;
      ans = (ans + temp) % p;
      er = (er * 10) % p;
    }
    cout << ans << endl;
    return 0;
  }
  temp = 0;
  if (n < 4) {
    for (i = 0; i < (n - 1); i++) {
      temp = (temp * 10 + a[i]) % p;
      if ((k - 1) > (n - i - 2)) {
        break;
      }
      tmp = fact[n - i - 2];
      tmp = (tmp * inv_fact[k - 1]) % p;
      tmp = (tmp * inv_fact[n - i - k - 1]) % p;
      ans = (ans + (temp * tmp)) % p;
    }
    for (i = 1; i < (n - 1); i++) {
      temp = 0;
      for (j = i; j < (n - 1); j++) {
        temp = (temp * 10 + a[j]) % p;
        if ((k - 2) > (n - (j - i + 1) - 2)) {
          break;
        }
        tmp = fact[n - j + i - 3];
        tmp = (tmp * inv_fact[k - 2]) % p;
        tmp = (tmp * inv_fact[n - j + i - k - 1]) % p;
        ans = (ans + (temp * tmp)) % p;
      }
    }
    er = 1;
    temp = 0;
    for (i = n - 1; i >= 0; i--) {
      temp = (a[i] * er + temp) % p;
      if ((k - 1) > (i - 1)) {
        break;
      }
      tmp = fact[i - 1];
      tmp = (tmp * inv_fact[k - 1]) % p;
      tmp = (tmp * inv_fact[i - k]) % p;
      ans = (ans + (temp * tmp)) % p;
      er = (10 * er) % p;
    }
    cout << ans << endl;
    return 0;
  }
  store[0] = a[0];
  for (i = 1; i < n; i++) {
    store[i] = store[i - 1] + a[i];
  }
  ans = 0;
  l = n - 3;
  sum = store[n - 3] - store[0];
  sum = (sum * fact[l]) % p;
  sum = (sum * inv_fact[k - 2]) % p;
  sum = (sum * inv_fact[l - k + 2]) % p;
  ans = sum;
  temp1 = a[0];
  temp2 = a[n - 2];
  temp3 = a[n - 1];
  temp = a[n - 2];
  temp = (temp * fact[l]) % p;
  temp = (temp * inv_fact[k - 2]) % p;
  temp = (temp * inv_fact[l - k + 2]) % p;
  ans = (ans + temp) % p;
  l = n - 2;
  temp = (a[0] + a[n - 1]) % p;
  temp = (temp * fact[l]) % p;
  temp = (temp * inv_fact[k - 1]) % p;
  temp = (temp * inv_fact[l - k + 1]) % p;
  ans = (ans + temp) % p;
  er = 10;
  l = n - 3;
  for (i = 1; i < n; i++) {
    if ((l - 1) < (k - 2)) {
      break;
    }
    temp1 = (temp1 * 10 + a[i]) % p;
    temp3 = (a[n - i - 1] * er + temp3) % p;
    temp2 = (a[n - i - 2] * er + temp2) % p;
    l--;
    temp = temp2;
    temp = (temp * fact[l]) % p;
    temp = (temp * inv_fact[k - 2]) % p;
    temp = (temp * inv_fact[l - k + 2]) % p;
    tmp = temp;
    l++;
    temp = (temp1 + temp3) % p;
    temp = (temp * fact[l]) % p;
    temp = (temp * inv_fact[k - 1]) % p;
    temp = (temp * inv_fact[l - k + 1]) % p;
    ans = (ans + temp) % p;
    temp = (10 * sum) % p;
    temp = (temp * inverse(l)) % p;
    temp = (temp * (l - k + 2)) % p;
    tempp = (store[n - 2] - store[i]) % p;
    if (tempp < 0) {
      tempp = tempp + p;
    }
    l--;
    tempp = (tempp * fact[l]) % p;
    tempp = (tempp * inv_fact[k - 2]) % p;
    tempp = (tempp * inv_fact[l - k + 2]) % p;
    l++;
    temp = (temp + tempp) % p;
    ans = (ans + temp) % p;
    sum = (temp - tmp) % p;
    if (sum < 0) {
      sum = sum + p;
    }
    er = (er * 10) % p;
    l--;
  }
  cout << ans << endl;
  return 0;
}
