E - Half Palindromes Editorial /

Time Limit: 3 sec / Memory Limit: 1024 MB

配点 : 100

問題文

英小文字からなる文字列 S が与えられます.S のすべての連続する部分文字列 |S|(|S|+1)/2 個に対して以下の問題を解き,解の値の総和を求めてください.

問題:英小文字からなる文字列 T が与えられます.T に以下の操作を好きなだけ繰返すことで作ることのできる文字列の長さの最小値を求めてください.

  • T の接頭辞であって奇数長(2k+1 文字とする)の回文になっているものを任意に取る.T の先頭 k 文字を削除する.

制約

  • 1\leq |S|\leq 10^6
  • S は英小文字からなる

入力

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

S

出力

答えを出力せよ.


入力例 1

abab

出力例 1

16

Ta または b のとき,答えは 1 です.

Tab または ba のとき,答えは 2 です.

Taba または bab のとき,k=1 として操作を一度行うのが最適であり,答えは 2 です.

Tabab のとき,k=1 として操作を行ったあと,もう一度 k=1 として操作を行うのが最適であり,答えは 2 です.

よって全体の答えは 1\times 4 + 2\times 3 + 2\times 2 + 2\times 1 = 16 です.


入力例 2

abacaba

出力例 2

67

入力例 3

tabatadebatabata

出力例 3

739

Score : 100 points

Problem Statement

You are given a string S consisting of lowercase letters. For each contiguous substring of S (there are |S|(|S|+1)/2 such substrings), solve the following problem, and compute the sum of the answers.

Problem: You are given a string T consisting of lowercase letters. Compute the minimum possible length of a string that can be obtained from T by repeatedly applying the following operation an arbitrary number of times.

  • Take a prefix of T that is a palindrome of odd length. Let the length be 2k+1. Remove the first k letters of T.

Constraints

  • 1\leq |S|\leq 10^6
  • S consists of lowercase letters.

Input

The input is given from Standard Input in the following format:

S

Output

Print the answer.


Sample Input 1

abab

Sample Output 1

16

If T is a or b, the answer is 1.

If T is ab or ba, the answer is 2.

If T is aba or bab, applying the operation with k=1 once is optimal, and the answer is 2.

If T is abab, applying the operation with k=1 twice is optimal, and the answer is 2.

Therefore, the whole answer is 1\times 4 + 2\times 3 + 2\times 2 + 2\times 1 = 16.


Sample Input 2

abacaba

Sample Output 2

67

Sample Input 3

tabatadebatabata

Sample Output 3

739