#abc215e. [abc215_e]Chain Contestant

[abc215_e]Chain Contestant

题目描述

AtCoder 的另一个世界举办了 1010 种类型的比赛,分别称为 AAC, ..., AJC。接下来会有 NN 场比赛。
将这 NN 场比赛的类型以字符串 SS 的形式给出:如果 SS 的第 ii 个字符是 xx,则第 ii 场比赛将是 AxxC。
AtCoDeer 将选择并参加 NN 场比赛中的一场或多场,使得满足以下条件。

  • 在他参加的比赛序列中,相同类型的比赛是连续的。
    • 具体地说,当 AtCoDeer 参加了 xx 场比赛并且其中第 ii 场比赛的类型是 TiT_i,那么对于每个整数三元组 (i,j,k)(i,j,k) 满足 1i<j<kx1 \leq i < j < k \leq x,如果 Ti=TkT_i=T_k,则必须满足 Ti=TjT_i=T_j

计算 AtCoDeer 选择参加比赛的方式数,取模 998244353998244353
当存在比赛 cc,AtCoDeer 在某一种方式下参加了比赛 cc,而在另一种方式下没有参加 cc,则认为两种选择方式是不同的。

约束条件

  • 1N10001 \leq N \leq 1000
  • S=N|S|=N
  • SS 由从 AJ 的大写英文字母组成。

输入

输入以以下格式从标准输入中给出:

NN SS

输出

输出一个整数表示答案。


示例输入 1

4
BGBH

示例输出 1

13

例如,参加第 11 场和第 33 场比赛是有效的,参加第 22 场和第 44 场比赛也是有效的。
另一方面,参加第 11、第 22、第 33 和第 44 场比赛是无效的,因为 ABC 类别的参与并不连续,违反了三元组 (i,j,k)=(1,2,3)(i,j,k)=(1,2,3) 的条件。
此外,不允许参加零场比赛。
总共有 1313 种有效的参赛方式。


示例输入 2

100
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBIEIJEIJIJCGCCFGIEBIHFCGFBFAEJIEJAJJHHEBBBJJJGJJJCCCBAAADCEHIIFEHHBGF

示例输出 2

330219020

请确保对结果取模 998244353998244353