#include <bits/stdc++.h>
using namespace std;
int n, most, dp[153][53][53][53], nxt[151][3], MOD = 51123987, res = 0;
char dat[160];
bool check(int a, int b, int c) {
  if (abs(a - b) > 1) return false;
  if (abs(a - c) > 1) return false;
  if (abs(b - c) > 1) return false;
  return true;
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) cin >> dat[i];
  for (int i = n; i; i--) {
    nxt[i][0] = nxt[i + 1][0], nxt[i][1] = nxt[i + 1][1];
    nxt[i][2] = nxt[i + 1][2], nxt[i][dat[i] - 'a'] = i;
  }
  most = n / 3 + 2;
  dp[1][0][0][0] = 1;
  for (int cur = 1; cur <= n; cur++)
    for (int i = 0; i < most; i++)
      for (int j = 0; j < most; j++)
        for (int k = 0; k < most; k++)
          if (dp[cur][i][j][k]) {
            if (i + j + k == n && check(i, j, k))
              res = (res + dp[cur][i][j][k]) % MOD;
            dp[nxt[cur][0]][i + 1][j][k] =
                (dp[nxt[cur][0]][i + 1][j][k] + dp[cur][i][j][k]) % MOD;
            dp[nxt[cur][1]][i][j + 1][k] =
                (dp[nxt[cur][1]][i][j + 1][k] + dp[cur][i][j][k]) % MOD;
            dp[nxt[cur][2]][i][j][k + 1] =
                (dp[nxt[cur][2]][i][j][k + 1] + dp[cur][i][j][k]) % MOD;
          }
  cout << res;
  return 0;
}
