atcoder#AGC019B. [AGC019B] Reverse and Compare

[AGC019B] Reverse and Compare

配点 : 500500

問題文

英小文字からなる文字列 A=A1A2...AnA = A_1 A_2 ... A_n があります。

あなたは 1ijn1 \leq i \leq j \leq n であるような任意の二つの添字 i,ji, j を選び、AA のうち部分文字列 AiAi+1...AjA_i A_{i+1} ... A_j を反転することができます。

この操作は一回まで行うことができます。

これによって得られる文字列は何通りあるでしょうか?

制約

  • 1A200,0001 \leq |A| \leq 200,000
  • AA は英小文字からなる。

入力

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

AA

出力

AA のうち任意の部分文字列を一回まで反転することによって、何通りの文字列が得られるか出力せよ。

aatt
5

得られる文字列は aatt(何もしない)、atatA[2..3]A[2..3] を反転)、attaA[2..4]A[2..4] を反転)、ttaaA[1..4]A[1..4] を反転)、taatA[1..3]A[1..3] を反転)です。

xxxxxxxxxx
1

どの部分文字列を反転しても、結果は xxxxxxxxxx です。

abracadabra
44