#include <bits/stdc++.h>
using namespace std;
const int maxN = 5e3 + 5;
const long long INF = 1e18;
const long long MOD = 1e9 + 7;
long long gcd(long long a, long long b) { return !b ? a : gcd(b, a % b); }
long long sq(long long x) { return (x * x) % MOD; }
long long modP(long long a, long long b) {
  return (!b ? 1 : (sq(modP(a, b / 2)) * (b % 2 ? a : 1)) % MOD);
}
long long fact[maxN], inv[maxN];
long long dp[26][maxN];
long long ps[maxN];
long long choose(long long n, long long k) {
  if (k < 0 || k > n) return 0;
  return (((fact[n] * inv[k]) % MOD) * inv[n - k]) % MOD;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  fact[0] = 1;
  for (int i = 1; i < maxN; i++) {
    fact[i] = (fact[i - 1] * i) % MOD;
  }
  inv[maxN - 1] = modP(fact[maxN - 1], MOD - 2);
  for (int i = maxN - 2; i > -1; i--) {
    inv[i] = (inv[i + 1] * (i + 1)) % MOD;
  }
  int n;
  cin >> n;
  string s;
  cin >> s;
  s = '0' + s;
  for (int i = 1; i <= n; i++) {
    if (s[i] == s[i - 1]) continue;
    int x = s[i] - 'a';
    if (!dp[x][1]) {
      dp[x][1] = 1;
      ps[1] += 1;
    }
    for (int l = 2; l <= i; l++) {
      long long add = ps[l - 1] - dp[x][l] - dp[x][l - 1];
      while (add < 0) add += MOD;
      add %= MOD;
      dp[x][l] = (dp[x][l] + add) % MOD;
      ps[l] = (ps[l] + add) % MOD;
    }
  }
  long long ans = 0;
  for (int l = 1; l <= n; l++) {
    long long tmp = 0;
    for (int i = 0; i < 26; i++) tmp = (tmp + dp[i][l]) % MOD;
    ans = (ans + (tmp * choose(n - 1, l - 1)) % MOD) % MOD;
  }
  cout << ans << endl;
  return 0;
}
