atcoder#AGC019B. [AGC019B] Reverse and Compare

[AGC019B] Reverse and Compare

Score : 500500 points

Problem Statement

You have a string A=A1A2...AnA = A_1 A_2 ... A_n consisting of lowercase English letters.

You can choose any two indices ii and jj such that 1ijn1 \leq i \leq j \leq n and reverse substring AiAi+1...AjA_i A_{i+1} ... A_j.

You can perform this operation at most once.

How many different strings can you obtain?

Constraints

  • 1A200,0001 \leq |A| \leq 200,000
  • AA consists of lowercase English letters.

Input

Input is given from Standard Input in the following format:

AA

Output

Print the number of different strings you can obtain by reversing any substring in AA at most once.

aatt
5

You can obtain aatt (don't do anything), atat (reverse A[2..3]A[2..3]), atta (reverse A[2..4]A[2..4]), ttaa (reverse A[1..4]A[1..4]) and taat (reverse A[1..3]A[1..3]).

xxxxxxxxxx
1

Whatever substring you reverse, you'll always get xxxxxxxxxx.

abracadabra
44