AT_agc055_d [AGC055D] ABC Ultimatum

题目描述

当且仅当一个长度为 $3N$ 的字符串 $T$,恰好包含 $N$ 个 `A`、$N$ 个 `B` 和 $N$ 个 `C`,并且存在一种将 $T$ 分解为 $N$ 个长度为 $3$ 的(不一定连续的)子序列的方法,使得每个子序列都是 `ABC`、`BCA` 或 `CAB` 之一时,我们称 $T$ 为**好字符串**。 现给定一个由 `A`、`B`、`C`、`?` 组成的长度为 $3N$ 的字符串 $S$。请你计算有多少种将每个 `?` 替换为 `A`、`B` 或 `C` 的方案,使得最终得到的字符串是好字符串。由于答案可能非常大,请输出答案对 $998244353$ 取模的结果。

输入格式

输入从标准输入中给出,格式如下: > $N$ $S$

输出格式

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

说明/提示

### 限制条件 - $1 \leq N \leq 15$ - $S$ 是一个由 `A`、`B`、`C`、`?` 组成的长度为 $3N$ 的字符串。 ### 样例解释 1 可以得到的好字符串有 `ABC`、`BCA`、`CAB` 共 $3$ 个。 ### 样例解释 2 可以得到的好字符串有 `AABBCC`、`AABCBC` 共 $2$ 个。 ### 样例解释 3 由于已经包含 $4$ 个 `A`,无法得到好字符串。 由 ChatGPT 4.1 翻译