#include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const ll MOD = 998244353; int main() { int N; string S; cin >> N; cin >> S; ll dp1[N][26]; memset(dp1, 0, sizeof(dp1)); ll dp2[N][26]; memset(dp2, 0, sizeof(dp2)); int a_cnt = 0; for (int i = 0; i < N; ++i) { int d = S[i] - 'a'; if (i == 0) { for (int v = d - 1; v >= 0; --v) { if (v == 0) { dp2[i][v] += 1; } else { dp1[i][v] += 1; } } } else { for (int v = d - 1; v >= 0; --v) { if (v == 0 && a_cnt > 0) continue; if (a_cnt >= 2) continue; if (a_cnt == 0) { if (v == 0) { dp2[i][v] += 1; dp2[i][v] %= MOD; } else { dp1[i][v] += 1; dp1[i][v] %= MOD; } } else { dp2[i][v] += 1; dp2[i][v] %= MOD; } } for (int v = 25; v >= 0; --v) { for (int u = 25; u >= 0; --u) { if (v == 0) { dp2[i][v] += dp1[i - 1][u]; dp2[i][v] %= MOD; } else { dp1[i][v] += dp1[i - 1][u]; dp2[i][v] += dp2[i - 1][u]; dp1[i][v] %= MOD; dp2[i][v] %= MOD; } } } } if (d == 0) { ++a_cnt; } /* for (int d = 0; d < 26; ++d) { cerr << dp1[i][d] << " "; } cerr << endl; for (int d = 0; d < 26; ++d) { cerr << dp2[i][d] << " "; } cerr << endl; */ } ll ans = 0; for (int d = 0; d <= 25; ++d) { ans += dp2[N - 1][d]; ans %= MOD; } cout << ans << endl; return 0; }