#ATagc055d. [AGC055D] ABC Ultimatum

[AGC055D] ABC Ultimatum

题目描述

当且仅当一个长度为 3N3N 的字符串 TT,恰好包含 NNANNBNNC,并且存在一种将 TT 分解为 NN 个长度为 33 的(不一定连续的)子序列的方法,使得每个子序列都是 ABCBCACAB 之一时,我们称 TT好字符串

现给定一个由 ABC? 组成的长度为 3N3N 的字符串 SS。请你计算有多少种将每个 ? 替换为 ABC 的方案,使得最终得到的字符串是好字符串。由于答案可能非常大,请输出答案对 998244353998244353 取模的结果。

输入格式

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

NN SS

输出格式

输出一个整数,表示方案数对 998244353998244353 取模的结果。

样例 1

输入

1
???

输出

3

样例 2

输入

2
AA????

输出

2

样例 3

输入

3
?A?A?A?A?

输出

0

样例 4

输入

9
?????????A??B??C???????????

输出

331653164

说明/提示

限制条件

  • 1N151 \leq N \leq 15
  • SS 是一个由 ABC? 组成的长度为 3N3N 的字符串。

样例解释 1

可以得到的好字符串有 ABCBCACAB33 个。

样例解释 2

可以得到的好字符串有 AABBCCAABCBC22 个。

样例解释 3

由于已经包含 44A,无法得到好字符串。

由 ChatGPT 4.1 翻译