#agc019b. [agc019_b]Reverse and Compare

[agc019_b]Reverse and Compare

题目描述

你有一个由小写英文字母组成的字符串 A=A1A2...AnA = A_1 A_2 ... A_n

你可以选择任意的两个下标 iijj,满足 1ijn1 \leq i \leq j \leq n,并且反转子串 AiAi+1...AjA_i A_{i+1} ... A_j

你最多可以执行一次这样的操作。

你能得到多少不同的字符串?

约束条件

  • 1A200,0001 \leq |A| \leq 200,000
  • AA 由小写英文字母组成。

输入

从标准输入获取输入,格式如下:

AA

输出

打印出最多可以通过反转 AA 中的任意子串获得的不同字符串的数量。


示例输入1

aatt

示例输出1

5

你可以得到 aatt(不进行任何操作),atat(反转 A\[2..3\]),atta(反转 A\[2..4\]),ttaa(反转 A\[1..4\])和 taat(反转 A\[1..3\])。


示例输入2

xxxxxxxxxx

示例输出2

1

无论你反转哪个子串,你总会得到 xxxxxxxxxx


示例输入3

abracadabra

示例输出3

44