#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
const int MAXN = 2006;
char str[MAXN];
int Pw[MAXN], Pm[MAXN];
int DP[MAXN][MAXN], S[MAXN][MAXN];
void solve() {
  int n, k;
  scanf("%d%d", &n, &k);
  scanf("%s", str);
  for (int i = 0; i < (n); ++i) Pw[i] = 'z' - str[i];
  for (int i = 0; i < (n); ++i) Pm[i] = str[i] - 'a';
  DP[n][0] = 1;
  for (int i = n - 1; i >= 0; i--)
    for (int h = 0; h < (k + 1); ++h) {
      S[i][h] = S[i + 1][h] + 1LL * DP[i + 1][h] * Pm[i] % mod;
      if (S[i][h] >= mod) S[i][h] -= mod;
      DP[i][h] += S[i][h];
      if (DP[i][h] >= mod) DP[i][h] -= mod;
      if (h == 0) DP[i][h]++;
      if (DP[i][h] >= mod) DP[i][h] -= mod;
      int lastj = -1;
      for (int j = n - i - 1; j >= 0; j--) {
        int u = (j + 1) * (n - i - j);
        if (u > h) {
          lastj = j;
          break;
        }
        DP[i][h] += 1LL * DP[i + j + 1][h - u] * Pw[i + j] % mod;
        if (DP[i][h] >= mod) DP[i][h] -= mod;
      }
      for (int j = 0; j + i < n && j < lastj; j++) {
        int u = (j + 1) * (n - i - j);
        if (u > h) {
          break;
        }
        DP[i][h] += 1LL * DP[i + j + 1][h - u] * Pw[i + j] % mod;
        if (DP[i][h] >= mod) DP[i][h] -= mod;
      }
    }
  printf("%d\n", DP[0][k]);
}
int main() {
  int t = 1;
  for (int i = 0; i < (t); ++i) solve();
  return 0;
}
