좋은 부분 문자열

a와 b로 이루어진 문자열에서 서로 겹치지 않는 두 위치에 나타나는 서로 다른 부분 문자열의 개수를 센다.

어려움8문자열문자열 매칭이분 탐색해시맵아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

a와 b로만 이루어진 문자열 SS가 있다. SS의 부분 문자열 PPSS 안에서 서로 겹치지 않게 두 번 이상 나타나면 PP는 좋은 부분 문자열이다. 다시 말해 PPii번째 위치와 jj번째 위치에서 시작해 나타나고 jij - iPP의 길이보다 크거나 같은 두 위치 i<ji < j가 있으면, PP는 좋은 부분 문자열이다.

SS가 aaaabb이면 좋은 부분 문자열은 a, aa, b이다. aaa는 SS에 두 번 나타나지만 두 등장이 겹치므로 좋은 부분 문자열이 아니다.

문자열 SS가 주어졌을 때, 서로 다른 좋은 부분 문자열의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 문자열 SS가 주어진다. SS는 a와 b로만 이루어지고, 길이는 1 이상 100,000 이하이다.

출력

첫째 줄에 SS의 서로 다른 좋은 부분 문자열의 개수를 출력한다.