#include <bits/stdc++.h>
using namespace std;
const long long N = 2001;
const long long MOD = 1000 * 1000 * 1000 + 7;
long long mod(long long n) {
  if (n < 0)
    return (n % MOD + MOD) % MOD;
  else if (n < MOD)
    return n;
  else if (n < 2 * MOD)
    return n - MOD;
  else
    return n % MOD;
}
long long dp[N][N], sum_not_eq[N][N], sum[N][N];
long long f[N];
long long f1[N];
long long getsum(long long i, long long j) {
  if (i == -1) {
    return j == 0;
  } else {
    return sum[i][j];
  }
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  long long n, k;
  cin >> n >> k;
  string s;
  cin >> s;
  if (k == 0) {
    long long ans = 1;
    for (char c : s) {
      ans = mod(ans * (c - 'a' + 1));
    }
    cout << ans << '\n';
    exit(0);
  }
  f[n] = 1;
  for (long long i = n - 1; i >= 0; --i) {
    f[i] = mod(f[i + 1] * (s[i] - 'a' + 1));
  }
  f1[0] = 1;
  for (long long i = 0; i < n; ++i) {
    f1[i + 1] = mod(f1[i] * (s[i] - 'a' + 1));
  }
  long long ans = 0;
  for (long long i = 0; i < n; ++i) {
    for (long long j = 0; j <= i && (j + 1) * (n - i) <= k; ++j) {
      long long x = (j + 1) * (n - i);
      if (j == i) {
        ++dp[i][x];
      } else {
        long long p = i - 1 - j;
        dp[i][x] = mod(dp[i][x] + (s[p] - 'a') * f1[p]);
      }
    }
    for (long long j = 0; j <= k; ++j) {
      for (long long p = 0; p <= i && (p + 1) * (n - i) <= j; ++p) {
        long long pos = i - 1 - p;
        long long w = j - (p + 1) * (n - i);
        if (w) {
          dp[i][j] = mod(dp[i][j] + sum_not_eq[pos][w]);
        }
      }
      dp[i][j] = mod(dp[i][j] * ('z' - s[i]));
    }
    for (long long j = 0; j <= k; ++j) {
      sum[i][j] = mod(getsum(i - 1, j) * (s[i] - 'a' + 1) + dp[i][j]);
      sum_not_eq[i][j] = mod(sum[i][j] - getsum(i - 1, j));
    }
    ans = mod(ans + dp[i][k] * f[i + 1]);
  }
  cout << ans << '\n';
}
