카펫
시간 제한2초메모리 제한1024 MB
문자열 s에서 구간 s[i..j]가 두 조각으로 나뉘어, 앞 조각은 i의 왼쪽에, 뒤 조각은 j의 오른쪽에 각각 나타나는 구간의 개수를 구합니다.
문제
오늘 스퀴드워드가 긴 두루마리 천을 샀다. 이 천은 26가지 색 중 하나로 염색된 개의 천 조각을 한 줄로 이어 붙인 것이다. 이 두루마리를 길이가 인 문자열 로 본다. 각 색은 영문 소문자 하나에 대응한다.
스퀴드워드는 이 두루마리에서 엄마에게 줄 매트를 자르려고 한다. 두루마리에서 비어 있지 않은 연속 구간을 골라 잘라내면 그것이 엄마의 매트가 된다. 나머지 부분에서는 완전히 같은 매트를 만들고 싶어 한다. 왼쪽 남은 부분에서 천 조각을 하나, 오른쪽 남은 부분에서 천 조각을 하나 잘라 그 순서대로 이어 붙인다. 그 결과가 그의 매트다. 두 매트는 완전히 같아야 한다. 매트를 자르는 방법의 수를 구하라.
형식적으로 말하면, 다음 조건을 만족하는 인덱스 쌍 , ()의 개수를 세라. 이고 인 , , , 가 존재하여 가 성립해야 한다. 여기서 는 문자열 연결이다.
스퀴드워드는 이 값을 직접 계산하지 못해서 당신에게 도움을 청했다.
입력
첫 줄에 문자열 ()가 주어진다. 는 영문 소문자로만 이루어져 있다.
출력
매트를 자르는 방법의 수를 한 줄에 출력한다.
힌트
첫 번째 예제에서는 인덱스 쌍 (2, 3)만 조건을 만족한다. 두 번째 예제에서는 (3, 4), (5, 6), (4, 6) 세 쌍이 조건을 만족한다.