#include <bits/stdc++.h>
using namespace std;
const long long M = 2005;
const long long INF = 1e18 + 5;
const long long MOD = 1e9 + 7;
const long long MAX = 25;
const long long N = 2.5e5 + 200;
inline long long add(long long a, long long b, long long p = MOD) {
  long long c = a + b;
  if (c >= p) c -= p;
  return c;
}
inline long long sub(long long a, long long b, long long p = MOD) {
  long long c = a - b;
  if (c < 0) c += p;
  return c;
}
inline long long mult(long long a, long long b, long long p = MOD) {
  return (a * 1ll * b) % p;
}
inline long long power(long long a, long long b) {
  long long ans = 1;
  if (b < 0) b += MOD - 1;
  while (b) {
    if (b & 1) ans = ans * a % MOD;
    b >>= 1;
    a = a * a % MOD;
  }
  return ans;
}
const double PI = 3.14159265358979323846264338327950288419716939937510;
long long n, g, dp[M][M], pre[M][M];
string s;
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> g >> s;
  long long t;
  dp[0][0] = 1;
  pre[0][0] = 1;
  for (long long i = 1; i <= n; i++) {
    for (long long k = 0; k <= g; k++) {
      dp[i][k] = add(dp[i][k], mult(pre[i - 1][k], (s[i - 1] - 'a')));
      for (long long j = 0; j < i && (t = (j + 1) * (n - i + 1)) <= k; j++)
        dp[i][k] = add(dp[i][k], mult(dp[i - j - 1][k - t], ('z' - s[i - 1])));
      pre[i][k] = add(pre[i - 1][k], dp[i][k]);
    }
  }
  cout << pre[n][g] << "\n";
}
