#include <bits/stdc++.h>
using namespace std;
const long long sz = 155, mod = 51123987;
char s[sz];
int dp[2][sz][sz][sz], prv[sz][3], n;
int main() {
  cin >> n;
  scanf("%s", s + 1);
  for (long long j = 0; j < 3; ++j) prv[0][j] = 0;
  for (long long i = 1; i <= n; ++i) {
    for (long long j = 0; j < 3; ++j) prv[i][j] = prv[i - 1][j];
    long long now = s[i] - 'a';
    prv[i][now] = i;
  }
  bool now = 0;
  for (long long j = 1; j <= n; j++) dp[0][j][0][0] = 1;
  for (long long i = 1; i <= n; ++i) {
    now ^= 1;
    for (long long j = 1; j <= n; ++j) {
      for (long long a = 0; a < 55; ++a) {
        for (long long b = 0; b < 55; ++b) {
          if (a + b > i) break;
          dp[now][j][a][b] = 0;
          if (prv[j][0] != 0 && a != 0) {
            int p = prv[j][0];
            dp[now][j][a][b] += dp[now ^ 1][p][a - 1][b];
          }
          if (prv[j][1] != 0 && b != 0) {
            int p = prv[j][1];
            dp[now][j][a][b] += dp[now ^ 1][p][a][b - 1];
          }
          int c = i - (a + b);
          if (prv[j][2] != 0 && c != 0) {
            int p = prv[j][2];
            dp[now][j][a][b] += dp[now ^ 1][p][a][b];
          }
          dp[now][j][a][b] %= mod;
        }
      }
    }
  }
  long long ans = 0;
  for (long long a = 0; a < 55; ++a) {
    for (long long b = 0; b < 55; ++b) {
      if (a + b > n) break;
      if (abs(a - b) > 1) continue;
      int c = n - (a + b);
      if (abs(a - c) <= 1 && abs(b - c) <= 1) {
        ans += dp[now][n][a][b];
        if (ans >= mod) ans -= mod;
      }
    }
  }
  cout << ans << '\n';
  return 0;
}
