AT_arc110_e [ARC110E] Shorten ABC

题目描述

有一个由 `A`、`B`、`C` 组成的长度为 $N$ 的字符串 $S$。 你可以对 $S$ 进行如下操作,操作次数可以为 $0$ 次或多次: - 选择一个 $i$($1 \leq i \leq |S| - 1$),使得 $S_i \neq S_{i+1}$。将 $S_i$ 替换为一个与 $S_i$ 和 $S_{i+1}$ 都不同的字符(在 `A`、`B`、`C` 中),然后将 $S_{i+1}$ 从 $S$ 中删除。 请输出经过 $0$ 次或多次操作后,可能得到的 $S$ 的不同字符串的种类数,结果对 $10^9+7$ 取模。

输入格式

输入通过标准输入给出,格式如下: > $N$\ > $S$

输出格式

请输出经过 $0$ 次或多次操作后,可能得到的 $S$ 的不同字符串的种类数,结果对 $10^9+7$ 取模。

说明/提示

## 限制条件 - $1 \leq N \leq 10^6$ - $S$ 是由 `A`、`B`、`C` 组成的长度为 $N$ 的字符串 ## 样例解释 1 例如,可以按如下方式操作,得到字符串 $S$ 为 `ACB`。 - 首先选择 $i=2$,将 $S_2$ 替换为 `C`,并删除 $S_3$,此时 $S$ 变为 `ACAC`。 - 然后选择 $i=3$,将 $S_3$ 替换为 `B`,并删除 $S_4$,此时 $S$ 变为 `ACB`。 由 ChatGPT 4.1 翻译