Variety of Strings

2 secs 1024 MB
sepa38's icon sepa38

問題文

長さ NN の小文字アルファベットのみからなる文字列 SS が与えられます。SS に対して以下の 22 種類の操作を行うことができます

操作 1:1: 整数 i  (1iN1) i ~~ (1 \leq i \leq N - 1) ~ を選び、 SiS_iSi+1S_{i+1} を入れ替える\\ 操作 2:2: 整数 i  (1iN2) i ~~ (1 \leq i \leq N - 2) ~ を選び、 SiS_iSi+2S_{i+2} を入れ替える

操作 1111 回以下行った後、操作 22 を任意の回数行えます。\\ 操作後の文字列として考えられるものが何通りか求めてください。ただし、答えは非常に大きくなる可能性があるので 109+710 ^ 9 + 7 で割った余りを出力してください

制約

  • 1N1051 \leq N \leq 10 ^ 5

入力

入力はすべて整数である。

N
S

出力

計算結果を一行に出力せよ。

サンプル

入力1
3
aab
出力1
3

"aab" の並び替えすべてを作ることができます

入力2
15
mmacontesteight
出力2
66867193

109+710 ^ 9 + 7 で割った余りを出力することに注意してください。

提出


Go (1.21)