#include <bits/stdc++.h>
using namespace std;
const int N = 155, M = 55, P = 51123987;
int f[N][M][M][M];
int main() {
  int n, i, j, k, l, a[N], limit, next[N][3], ans = 0;
  string s;
  cin >> n >> s;
  for (i = 1; i <= n; i++) a[i] = int(s[i - 1]) - int('a');
  memset(next, -1, sizeof(next));
  for (i = n; i > 0; i--) {
    for (j = 0; j < 3; j++) next[i][j] = next[i + 1][j];
    next[i][a[i]] = i;
  }
  for (i = 0; i < 3; i++) next[0][i] = next[1][i];
  if (n % 3 == 0)
    limit = n / 3;
  else
    limit = n / 3 + 1;
  memset(f, 0, sizeof(f));
  f[0][0][0][0] = 1;
  for (i = 0; i <= n; i++)
    for (j = 0; j <= limit; j++)
      for (k = 0; k <= limit; k++)
        for (l = 0; l <= limit; l++)
          if (f[i][j][k][l] != 0) {
            if (next[i][0] != -1)
              f[next[i][0]][j + 1][k][l] =
                  (f[next[i][0]][j + 1][k][l] + f[i][j][k][l]) % P;
            if (next[i][1] != -1)
              f[next[i][1]][j][k + 1][l] =
                  (f[next[i][1]][j][k + 1][l] + f[i][j][k][l]) % P;
            if (next[i][2] != -1)
              f[next[i][2]][j][k][l + 1] =
                  (f[next[i][2]][j][k][l + 1] + f[i][j][k][l]) % P;
          }
  if (n % 3 == 0) {
    for (i = 0; i <= n; i++) ans = (ans + f[i][limit][limit][limit]) % P;
  } else {
    for (i = 0; i <= n; i++)
      for (j = limit - 1; j <= limit; j++)
        for (k = limit - 1; k <= limit; k++)
          for (l = limit - 1; l <= limit; l++)
            if (j + k + l == n) ans = (ans + f[i][j][k][l]) % P;
  }
  cout << ans;
  return (0);
}
