#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
long long t[20000];
long long binpow(long long a, long long n) {
  long long ans = 1;
  while (n) {
    if (n & 1) ans = ans * a % mod;
    a = a * a % mod;
    n >>= 1;
  }
  return ans;
}
long long inv(long long x) { return binpow(x, mod - 2); }
long long c_n_k(long long n, long long k) {
  return t[n] * inv(t[k]) % mod * inv(t[n - k]) % mod;
}
const long long maxn = 5005, k = 26;
long long dp[maxn][maxn];
long long cnt[maxn];
long long p[maxn][k];
int main() {
  t[0] = 1;
  for (long long i = 1; i < 20000; i++) t[i] = i * t[i - 1] % mod;
  long long n;
  cin >> n;
  string s;
  cin >> s;
  for (long long i = 0; i < k; i++) p[n][i] = n;
  for (long long i = n - 1; i >= 0; i--) {
    memcpy(p[i], p[i + 1], sizeof(p[i]));
    p[i][s[i] - 'a'] = i;
  }
  for (long long i = 0; i < 26; i++) dp[p[0][i]][1] = 1;
  for (long long i = 0; i < n; i++) {
    p[i][s[i] - 'a'] = n;
    for (long long l = 1; l <= n; l++) {
      dp[i][l] %= mod;
      if (dp[i][l] == 0) continue;
      for (long long j = 0; j < k; j++) dp[p[i][j]][l + 1] += dp[i][l];
      cnt[l] = (cnt[l] + dp[i][l]) % mod;
    }
  }
  long long ans = 0;
  for (long long l = 1; l <= n; l++) {
    long long r = n - l;
    ans = (ans + cnt[l] * c_n_k(r + l - 1, r)) % mod;
  }
  cout << ans;
  return 0;
}
