#include <bits/stdc++.h>
using namespace std;
const long long maxn = 2e3 + 100;
const long long MOD = 1000000007;
long long f[maxn][maxn], n, k;
char s[maxn];
void getDp() {
  memset(f, 0, sizeof(f));
  f[0][0] = 1;
  for (long long i = 1; i <= n; i++) {
    for (long long j = 0; j <= k; j++) {
      f[i][j] = f[i - 1][j] * (s[i] - 'a' + 1) % MOD;
      long long limit = min(i, j / (n - i + 1));
      long long tmp;
      for (long long t = 1; t <= limit; t++) {
        if (t != i)
          tmp = ((f[i - t][j - t * (n - i + 1)] -
                  f[i - t - 1][j - t * (n - i + 1)]) %
                     MOD +
                 MOD) %
                MOD;
        else
          tmp = (f[i - t][j - t * (n - i + 1)]) % MOD;
        f[i][j] = (f[i][j] + tmp * ('z' - s[i])) % MOD;
      }
    }
  }
}
void solve() {
  getDp();
  printf("%I64d\n", f[n][k]);
}
int main() {
  while (scanf("%I64d%I64d", &n, &k) != EOF) {
    scanf("%s", s + 1);
    solve();
  }
  return 0;
}
