#arc110e. [arc110_e]Shorten ABC

[arc110_e]Shorten ABC

题目描述

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

可以对SS进行以下操作零次或多次:

  • 选择 ii (1leqileqS1)(1 \\leq i \\leq |S| - 1),满足 SineqSi+1S_i \\neq S_{i + 1}。将 SiS_i 替换为与 SiS_iSi+1S_{i + 1} 均不同的字符(ABC 中的一个),并从 SS 中删除 Si+1S_{i + 1}

找出在零次或多次操作后,SS 可以得到的不同字符串数量,并按模 (109+7)(10^9+7) 进行打印。

约束条件

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

输入

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

NN

SS

输出

按模 (109+7)(10^9+7) 打印在零次或多次操作后,SS 可以得到的不同字符串数量。


示例输入1

5
ABAAC

示例输出1

11

例如,以下操作序列可以将 SS 变为 ACB

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

示例输入2

50
AACCCCBBBACCCCABABCCCCABACCACACACCACABABBBABABACCB

示例输出2

256972022