#ATarc110e. [ARC110E] Shorten ABC

[ARC110E] Shorten ABC

题目描述

有一个由 ABC 组成的长度为 NN 的字符串 SS

你可以对 SS 进行如下操作,操作次数可以为 00 次或多次:

  • 选择一个 ii1iS11 \leq i \leq |S| - 1),使得 SiSi+1S_i \neq S_{i+1}。将 SiS_i 替换为一个与 SiS_iSi+1S_{i+1} 都不同的字符(在 ABC 中),然后将 Si+1S_{i+1}SS 中删除。

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

输入格式

输入通过标准输入给出,格式如下:

NN
SS

输出格式

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

样例 1

输入

5
ABAAC

输出

11

样例 2

输入

50
AACCCCBBBACCCCABABCCCCABACCACACACCACABABBBABABACCB

输出

256972022

说明/提示

限制条件

  • 1N1061 \leq N \leq 10^6
  • SS 是由 ABC 组成的长度为 NN 的字符串

样例解释 1

例如,可以按如下方式操作,得到字符串 SSACB

  • 首先选择 i=2i=2,将 S2S_2 替换为 C,并删除 S3S_3,此时 SS 变为 ACAC
  • 然后选择 i=3i=3,将 S3S_3 替换为 B,并删除 S4S_4,此时 SS 变为 ACB

由 ChatGPT 4.1 翻译