atcoder#ARC110E. [ARC110E] Shorten ABC

[ARC110E] Shorten ABC

配点 : 800800

問題文

A, B, C からなる長さ NN の文字列 SS があります。

あなたは SS に対して、以下の操作を 00 回以上行うことができます。

  • SiSi+1S_i \neq S_{i + 1} である i(1iS1)i \sim (1 \leq i \leq |S| - 1) を選ぶ。SiS_iSi,Si+1S_i, S_{i + 1} のいずれとも(A, B, C の中で)異なる文字で置き換え、Si+1S_{i + 1}SS から削除する

操作を 00 回以上行ったあとの SS として、ありえるものの種類数を 109+710^9+7 で割った余りを出力してください。

制約

  • 1N1061 \leq N \leq 10^6
  • SSA, B, C からなる長さ NN の文字列

入力

入力は以下の形式で標準入力から与えられる。

NN

SS

出力

操作を 00 回以上行ったあとの SS として、ありえるものの種類数を 109+710^9+7 で割った余りを出力せよ。

5
ABAAC
11

たとえば以下のように操作すると、文字列 SS として ACB が得られます。

  • まず ii として 22 を選ぶ。S2S_2C で置き換え、S3S_3 を削除するので SSACAC になる
  • 次に ii として 33 を選ぶ。S3S_3B で置き換え、S4S_4 を削除するので SSACB になる
50
AACCCCBBBACCCCABABCCCCABACCACACACCACABABBBABABACCB
256972022