AT_agc060_a [AGC060A] No Majority

Description

[problemUrl]: https://atcoder.jp/contests/agc060/tasks/agc060_a 英小文字からなる文字列 $ x $ が以下の条件を満たすとき,$ x $ を**よい**文字列と呼ぶことにします. - $ x $ の長さ $ 2 $ 以上の (連続する) 部分文字列は,すべて以下の条件を満たす. - その部分文字列内で過半数を占める文字が存在しない. 例えば,`acbca` はよい文字列ではありません. これは,部分文字列 `cbc` のなかで `c` が過半数を占めているからです. 英小文字と `?` からなる長さ $ N $ の文字列 $ S $ が与えられます. それぞれの `?` を好きな英小文字に置き換ることで,$ S $ をよい文字列にしたいです. $ S $ をよい文字列にする方法が何通りあるかを $ 998244353 $ で割ったあまりを求めてください.

Input Format

入力は以下の形式で標準入力から与えられる. > $ N $ $ S $

Output Format

答えを出力せよ.

Explanation/Hint

### 制約 - $ 2\ \leq\ N\ \leq\ 5000 $ - $ S $ は英小文字と `?` からなる長さ $ N $ の文字列 ### Sample Explanation 1 `aab`, `abb` 以外の方法が条件を満たします.