#include <bits/stdc++.h>
using namespace std;
const int max_n = 2000, MODULO = 1000000000 + 7;
long long d[max_n + 1][max_n + 1][2];
int interesting[max_n + 1][max_n + 1];
int interestingCount[max_n + 1];
int main() {
  ios_base::sync_with_stdio(0);
  int n, k;
  cin >> n >> k;
  string s;
  cin >> s;
  for (int a = 0; a <= n; a++) {
    for (int b = 0; a + b + 1 <= n; b++) {
      if ((a + 1) * (b + 1) <= k) {
        interesting[a + b + 1][interestingCount[a + b + 1]++] = a;
      }
    }
  }
  d[0][0][0] = 1;
  for (int i = 0; i < n; i++) {
    int remain = n - i;
    for (int j = 0; j <= k; j++) {
      for (int oldFlag = 0; oldFlag <= 1; oldFlag++) {
        long long current = d[i][j][oldFlag];
        if (current != 0) {
          if (oldFlag == 0) {
            for (int id = 0; id < interestingCount[remain]; id++) {
              int a = interesting[remain][id];
              int b = remain - a - 1;
              long long higher = ('z' - s[i + a]);
              int add = (a + 1) * (b + 1);
              if (j + add <= k) {
                d[i + a + 1][j + add][0] += higher * current;
                d[i + a + 1][j + add][0] %= MODULO;
              }
            }
          }
          long long lower = s[i] - 'a';
          d[i + 1][j][0] += lower * current;
          d[i + 1][j][0] %= MODULO;
          d[i + 1][j][1] += current;
          d[i + 1][j][1] %= MODULO;
        }
      }
    }
  }
  long long result = d[n][k][0] + d[n][k][1];
  result %= MODULO;
  cout << result << endl;
  return 0;
}
