#include <bits/stdc++.h>
using namespace std;
template <typename T1, typename T2>
ostream &operator<<(ostream &O, pair<T1, T2> &t) {
  return O << "(" << t.first << "," << t.second << ")";
}
template <typename T>
ostream &operator<<(ostream &O, vector<T> &t) {
  for (int _ = 0; _ < (int)t.size(); ++_) O << t[_] << " ";
  return O;
}
void dout() { cout << endl; }
template <typename Head, typename... Tail>
void dout(Head H, Tail... T) {
  cout << H << " ";
  dout(T...);
}
inline long long Cnk(int _n, int _k) {
  long long _r = 1;
  int _t = max(_k, _n - _k);
  for (int _i = _t + 1; _i <= _n; ++_i) {
    _r *= _i;
    _r /= _i - _t;
  }
  return _r;
}
inline long long gcdex(long long _a, long long _b, long long &_x,
                       long long &_y) {
  long long _r, _q, _x0, _y0, _x1, _y1;
  _y1 = _x = _x0 = 1;
  _x1 = _y = _y0 = 0;
  while (_b != 0) {
    _q = _a / _b;
    _r = _a - _q * _b;
    if (_r != 0) {
      _x = _x0 - _q * _x1;
      _y = _y0 - _q * _y1;
      _x0 = _x1;
      _y0 = _y1;
      _x1 = _x;
      _y1 = _y;
    }
    _a = _b;
    _b = _r;
  }
  if (_a < 0) {
    _a = -_a;
    _x = -_x;
    _y = -_y;
  }
  return _a;
}
inline long long inverse(long long _n, long long _m) {
  long long _x, _y;
  long long _g = gcdex(_n, _m, _x, _y);
  if (_g != 1)
    return -1;
  else
    return (_x % _m + _m) % _m;
}
int main() {
  int n, k;
  scanf("%d%d", &n, &k);
  int m[100500], ms[100500];
  char s[100500];
  scanf("%s", &s);
  for (int i = 0; i < n; ++i) {
    m[i] = s[i] - '0';
    if (!i)
      ms[i] = m[i];
    else
      ms[i] = (ms[i - 1] + m[i]) % (1000000007);
  }
  long long ck = 1, ck1 = 1, p = 1, a = n - k;
  long long pi = inverse(10, (1000000007));
  while (a > 1) p = (p * 10) % (1000000007), a--;
  long long res = 0;
  for (int i = k, n1 = k; i < n; ++i, ++n1) {
    res = (res + (ck1 * (i ? ms[i - 1] : 0) % (1000000007) +
                  ck * m[i] % (1000000007)) %
                     (1000000007) * p % (1000000007)) %
          (1000000007);
    p = (p * pi) % (1000000007);
    ck = ck * (n1 + 1) % (1000000007) * inverse(n1 + 1 - k, (1000000007)) %
         (1000000007);
    ck1 = ck1 * n1 % (1000000007) * inverse(n1 + 1 - k, (1000000007)) %
          (1000000007);
  }
  cout << res;
  return 0;
}
int cpp4cf_main() {
  freopen("C.cpp", "r", stdin);
  char s[99];
  bool f;
  while (true) {
    cin >> s;
    if (cin.eof()) break;
    if (strstr(s, "/*")) {
      cin >> s;
      if (strstr(s, "Test")) {
        cin >> s;
        if (strstr(s, "on")) {
          cout << "Output: ";
          cpp4cf_main();
          cout << "\nAnswer: ";
          f = false;
          while (true) {
            cin >> s;
            if (strstr(s, "*/")) break;
            if (strstr(s, "//")) {
              if (f)
                cout << endl;
              else
                f = true;
            } else
              cout << s << " ";
          }
          cout << "\n\n";
        }
      }
    }
  }
  return 0;
}
