#include <bits/stdc++.h>
using namespace std;
int dp[152][53][53][53];
char s[152];
int nxt[152][3];
void add(int &x, int y) { x = (x + y) % 51123987; }
bool can(int x, int y) {
  if (x - y >= -1 && x - y <= 1) return 1;
  return 0;
}
int main() {
  int n, ans, m;
  scanf("%d", &n);
  scanf("%s", s);
  memset(dp, 0, sizeof(dp));
  memset(nxt, 0, sizeof(nxt));
  for (int i = n; i >= 1; i--) {
    for (int j = 0; j < 3; j++) nxt[i][j] = nxt[i + 1][j];
    nxt[i][s[i - 1] - 'a'] = i;
  }
  dp[1][0][0][0] = 1;
  ans = 0;
  m = (n + 2) / 3 + 1;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j <= m; j++) {
      for (int k = 0; k <= m; k++) {
        for (int w = 0; w <= m; w++) {
          if (dp[i][j][k][w]) {
            int tmp = dp[i][j][k][w];
            if (j + k + w == n && can(j, k) && can(j, w) && can(k, w))
              add(ans, tmp);
            add(dp[nxt[i][0]][j + 1][k][w], tmp);
            add(dp[nxt[i][1]][j][k + 1][w], tmp);
            add(dp[nxt[i][2]][j][k][w + 1], tmp);
          }
        }
      }
    }
  }
  cout << ans << endl;
  return 0;
}
