15
txxtxttxxttxtxx
 3
myw
 127
xixtxixnxixtxixlxixtxixnxixtxixoxixtxixnxixtxixlxixtxixnxixtxixhxixtxixnxixtxixlxixtxixnxixtxixoxixtxixnxixtxixlxixtxixnxixtxix
 1
a
 10
isssisssss
 2
ff
 1
z

27824
 10
 944124121
 1
 176
 1
 1

#include <bits/stdc++.h>
using namespace std;
void ga(int N, int *A) {
  for (int i(0); i < N; i++) scanf("%d", A + i);
}
long long f[5005] = {1, 1}, I[5005] = {1, 1}, J[5005] = {1, 1};
void pre() {
  for (int k(2); k < 5005; k++)
    f[k] = f[k - 1] * k % (1000000007),
    J[k] =
        -(1000000007) / k * J[(1000000007) % k] % (1000000007) + (1000000007),
    I[k] = I[k - 1] * J[k] % (1000000007);
  ;
}
long long C(int N, int K) {
  return N < K ? 0 : (f[N] * I[K] % (1000000007)) * I[N - K] % (1000000007);
}
char s[5005];
int S, N, dp[5005][27], a;
int main(void) {
  pre();
  scanf("%d%s", &N, s);
  for (int i(0); i < N; i++) {
    for (int j = i; j; --j)
      a = j ? (dp[j - 1][26] - dp[j - 1][s[i] - 97] + (1000000007)) %
                  (1000000007)
            : 0 + 1,
      dp[j][26] -= dp[j][s[i] - 97], dp[j][s[i] - 97] = a, dp[j][26] += a;
    if (!dp[0][s[i] - 97]) dp[0][s[i] - 97] = 1, ++dp[0][26];
  }
  for (int i(0); i < N; i++) S = (S + C(N - 1, i) * dp[i][26]) % (1000000007);
  printf("%d\n", S);
  return 0;
}
