#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long f = 1, sum = 0;
  char c = getchar();
  while (!isdigit(c)) {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (isdigit(c)) {
    sum = sum * 10 + c - '0';
    c = getchar();
  }
  return sum * f;
}
const int MAXN = 160;
int f[2][MAXN][80][60][8], g[MAXN][MAXN];
char s[MAXN];
int num[3], dig[3];
int main() {
  int n;
  scanf("%d", &n);
  scanf("%s", s);
  for (int i = 0; i < n; i++) num[s[i] - 'a']++;
  dig[0] = 0, dig[1] = 1, dig[2] = 2;
  sort(dig, dig + 3, [](int i, int j) { return num[i] > num[j]; });
  for (int i = 0; i < n; i++) {
    if (s[i] - 'a' == dig[0])
      s[i] = 'a';
    else if (s[i] - 'a' == dig[1])
      s[i] = 'b';
    else
      s[i] = 'c';
  }
  int num1 = 0, num2 = 0, num3 = 0;
  f[0][0][0][0][0] = 1;
  for (int i = 0; i < n; i++) {
    int now = i % 2, nxt = (i + 1) % 2;
    for (int a = 0; a <= num1; a++)
      for (int b = 0; b <= num2; b++)
        for (int c = 0; c <= num3; c++)
          for (int S = 0; S < 8; S++) f[nxt][a][b][c][S] = 0;
    int x = s[i] - 'a';
    for (int a = 0; a <= num1; a++)
      for (int b = 0; b <= num2; b++)
        for (int c = 0; c <= num3; c++)
          for (int S = 0; S < 8; S++) {
            if (!f[now][a][b][c][S]) continue;
            if (!(S & (1 << x)))
              (f[nxt][a + ((x == 0) ? 1 : 0)][b + ((x == 1) ? 1 : 0)]
                [c + ((x == 2) ? 1 : 0)][1 << x] += f[now][a][b][c][S]) %=
                  51123987;
            (f[nxt][a][b][c][S | (1 << x)] += f[now][a][b][c][S]) %= 51123987;
          }
    if (!x)
      num1++;
    else if (x == 1)
      num2++;
    else
      num3++;
  }
  g[0][0] = 1;
  for (int i = 0; i <= n; i++)
    for (int j = 0; j <= n; j++)
      if (g[i][j] > 0)
        for (int k = j + 1; k <= n; k++) (g[i + 1][k] += g[i][j]) %= 51123987;
  int ans = 0;
  for (int a = 0; a <= num1 + 1; a++)
    for (int b = 0; b <= num2 + 1; b++)
      for (int c = 0; c <= num3 + 1; c++)
        for (int S = 0; S < 8; S++) {
          if (!f[n % 2][a][b][c][S]) continue;
          long long tmp = f[n % 2][a][b][c][S];
          for (int a1 = n / 3; a1 <= n / 3 + 1; a1++)
            for (int b1 = n / 3; b1 <= n / 3 + 1; b1++)
              for (int c1 = n / 3; c1 <= n / 3 + 1; c1++)
                if (a1 + b1 + c1 == n) {
                  long long tmp2 = tmp * g[a][a1] % 51123987 * g[b][b1] %
                                   51123987 * g[c][c1] % 51123987;
                  ans += tmp2, ans %= 51123987;
                }
        }
  cout << ans;
  return 0;
}
