Informatica Online Judge

  문자열 한 번 뒤집기 [1957 / 07A5]

Time Limit(Test case) : 2000 (ms)
Number of users who solved : 12   Total Tried : 7


The Champion of this Problem (C++) : icp1481 - 0ms / 120byte
My Best Submission (C++) : N/A

[AtCoder]

Background

알파벳 소문자로만 이루어진 문자열 $A = A_1A_2 ... A_n$ 이 있다.

경곽이는 $1 ≤ i ≤ j ≤ n$ 인 임의의 $i, j$ 를 정한다.

문자열 $A$에서 부분문자열 $A_iA_{i+1} ... A_j$를 한 번 뒤집는다.

이 작업의 결과 얻을 수 있는 서로 다른 문자열은 몇 가지나 되는지 구하는 프로그램을 작성하시오.

Input

$A$

[입력값의 정의역]
$1≤|A|≤200,000$
$A$는 모두 소문자로만 구성된다.

Output

부분 문자열을 한 번 뒤집어서 얻을 수 있는 서로 다른 문자열의 개수를 출력한다.

IO Example

입력
aatt

출력
5

* 설명

다음과 같이 5가지가 있다.

aatt ([1, 1]을 뒤집는다.)
atat ([2, 3]을 뒤집는다.)
atta ([2, 4]를 뒤집는다.)
ttaa ([1, 4]를 뒤집는다.)
taat ([1, 3]을 뒤집는다.)

Submit : [C/C++] | [C++11] | [Obj-C] | [Java] | [Python]
Prob Analysis : [Problem Statistics] | [Solution]