Double Palindrome | 프로그래밍의 벗 PivotOJ
PivotOJ

Double Palindrome

시간 제한: 2000ms메모리 제한: 1024MB출처: MOOI 2019-20 finalBOJ 30695

문제

Vanya works at the factory producing palindromes. The factory has a workpiece --- a string ss line of length nn, consisting of lowercase English letters, from which Vanya can cut out any substring for sale. We remind you that palindrome --- is a string that reads in the same way from left to right and from right to left.

A lot of people are fed up with a usual palindromes, so Vanya decided to produce double palindromes instead. Double palindrome is a string formed by a concatenation of two palindromes of equal length. For example, the strings "aabb", "aaaa" are double palindromes, while strings "abba" and "aaaabb" are not.

Vanya wonders how many ways are there to cut out double palindrome from ss. In other words, how many there are pairs (l,r)(l, r), such that substring slsl+1srs_l s_{l+1} \ldots s_r is a double palindrome. Please help Vanya to find an answer to this question.

입력

The first line contains an integer nn (1n5000001 \leq n \leq 500\,000) --- the length of the string ss. The second contains a string ss, consisting of lowercase English letters.

출력

Print a single integer --- the number of double palindrome substrings.

힌트

In the first example, there are 5 double palindromes of length 2 ("ab", "ba", "ac", "ca" and "ac"), and the whole string is a double palindrome as well ("abacac").

예제

예제 1

입력
6
abacac
출력
6

예제 2

입력
5
aaaaa
출력
6
코드를 제출하려면 로그인하세요.