atcoder#ABC215E. [ABC215E] Chain Contestant

[ABC215E] Chain Contestant

配点 : 500500

問題文

別世界の AtCoder では現在、 AAC, ..., AJC の 1010 種類のコンテストが開催されており、これから NN 回のコンテストが開催されます。 各コンテストの種類は文字列 SS として与えられ、 SSii 文字目が xx なら ii 回目には AxxC が開催されます。 シカの AtCoDeer くんは、 NN 個のコンテストから 11 個以上いくつか選んで、以下の条件を満たすように選んで出場します。

  • 出るコンテストを順番を保ったまま抜き出したとき、コンテストの種類ごとにひとかたまりとなっている。- 厳密には、 AtCoDeer くんが xx 個のコンテストに出場し、そのうち ii 回目のコンテストの種類が TiT_i であるとき、全ての 1i<j<kx1 \le i < j < k \le x を満たす整数組 (i,j,k)(i,j,k) に対して、 Ti=TkT_i=T_k であるならば Ti=TjT_i=T_j でなければならない。

AtCoDeer くんが出場するコンテストの選び方として考えられるものの総数を 998244353998244353 で割った余りを求めてください。 ただし、 22 つのコンテストの選び方が異なるとは、あるコンテスト cc が存在して、片方の選び方では cc に出場するがもう片方の選び方では出場しないということを指します。

制約

  • 1N10001 \le N \le 1000
  • S=N|S|=N
  • SSA から J までの英大文字のみからなる

入力

入力は以下の形式で標準入力から与えられる。

NN

SS

出力

答えを整数として出力せよ。

4
BGBH
13

例えば、 1,31,3 回目のコンテストに出場する、 2,42,4 回目のコンテストに出場するという選び方は条件を満たします。 一方、 1,2,3,41,2,3,4 回目のコンテストに出場する場合、 ABC への出場がひとかたまりになっておらず、整数組 (i,j,k)=(1,2,3)(i,j,k)=(1,2,3) について条件に違反します。 また、全てのコンテストに出場しないということも認められません。 問題文の条件に適する出場するコンテストの選び方は 1313 通りあります。

100
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBIEIJEIJIJCGCCFGIEBIHFCGFBFAEJIEJAJJHHEBBBJJJGJJJCCCBAAADCEHIIFEHHBGF
330219020

総数を 998244353998244353 で割った余りを求めることに注意してください。