#include <bits/stdc++.h>
using namespace std;
const int N = 150 + 5;
const int M = 50 + 5;
const int MOD = 51123987;
int n, ans;
int v[N];
int ta[N], tb[N], tc[N];
int f[N][M][M][M];
char ss[N];
void A(int &a, int b) { (a += b) %= MOD; }
int main() {
  int i, j, num;
  int a, b, c;
  int na, nb, nc;
  scanf("%d", &n);
  scanf("%s", ss);
  for (i = 0; i < n; i++) v[i + 1] = ss[i] - 'a';
  f[1][0][0][0] = 1, v[n + 1] = -1;
  na = nb = nc = n + 1;
  for (i = n; i >= 1; i--) {
    if (v[i] == 0) na = i;
    if (v[i] == 1) nb = i;
    if (v[i] == 2) nc = i;
    ta[i] = na, tb[i] = nb, tc[i] = nc;
  }
  for (i = 1; i <= n; i++)
    for (num = 0; num <= n; num++)
      for (a = 0; a <= ((51) < (num) ? (51) : (num)); a++)
        for (b = 0; b <= ((51) < (num - a) ? (51) : (num - a)); b++) {
          c = num - a - b;
          if (c > 51) continue;
          if (num == n)
            A(f[n + 1][a][b][c], f[i][a][b][c]);
          else {
            if (ta[i] <= n) A(f[ta[i]][a + 1][b][c], f[i][a][b][c]);
            if (tb[i] <= n) A(f[tb[i]][a][b + 1][c], f[i][a][b][c]);
            if (tc[i] <= n) A(f[tc[i]][a][b][c + 1], f[i][a][b][c]);
          }
        }
  for (a = ((n / 3 - 3) > (0) ? (n / 3 - 3) : (0));
       a <= ((n / 3 + 3) < (n) ? (n / 3 + 3) : (n)); a++)
    for (i = -1; i <= 1; i++)
      for (j = -1; j <= 1; j++)
        if (i * j != -1 && a * 3 + i + j == n)
          A(ans, f[n + 1][a][a + i][a + j]);
  printf("%d\n", ans);
  return 0;
}
