#include <bits/stdc++.h>
using namespace std;
long long N, M, ans, c;
long long ff[3];
char s[200];
long long t[200][3];
long long f1[160][60][60], f2[160][60][60];
int main() {
  scanf("%I64d\n", &N);
  for (long long i = 1; i <= N; i++) scanf("%c", &s[i]);
  M = 1;
  for (long long i = 2; i <= N; i++)
    if (s[M] != s[i]) s[++M] = s[i];
  t[M + 1][0] = M + 1;
  t[M + 1][1] = M + 1;
  t[M + 1][2] = M + 1;
  for (long long i = M; i; i--) {
    t[i][0] = t[i + 1][0];
    t[i][1] = t[i + 1][1];
    t[i][2] = t[i + 1][2];
    t[i][s[i] - 'a'] = i;
  }
  f1[1][0][0] = 1;
  for (long long i = 0; i < N; i++) {
    memset(f2, 0, sizeof(f2));
    for (long long j = 1; j <= M; j++)
      for (long long a = 0; a <= i && a <= N / 3 + 2; a++)
        for (long long b = 0; b <= i - a && b <= N / 3 + 2; b++)
          if (f1[j][a][b]) {
            c = i - a - b;
            if (c > N / 3 + 2) continue;
            for (long long u = 0; u < 3; u++)
              if (t[j][u] <= N) {
                ff[0] = a;
                ff[1] = b;
                ff[2] = c;
                ff[u]++;
                f2[t[j][u]][ff[0]][ff[1]] =
                    (f2[t[j][u]][ff[0]][ff[1]] + f1[j][a][b]) % 51123987;
                ;
              }
          }
    memcpy(f1, f2, sizeof(f1));
  }
  for (long long i = 1; i <= M; i++)
    for (long long a = 0; a <= N && a <= N / 3 + 2; a++)
      for (long long b = 0; b <= N - a && b <= N / 3 + 2; b++) {
        long long c = N - a - b;
        if (c > N / 3 + 2) continue;
        if (abs(a - b) <= 1 && abs(a - c) <= 1 && abs(b - c) <= 1)
          ans = (ans + f1[i][a][b]) % 51123987;
        ;
      }
  printf("%I64d", ans);
}
