원형으로 배치된 문자열 S에서 시계 방향이나 반시계 방향으로 읽은 연속 블록에 나타나는 서로 다른 부분 문자열의 개수를 센다.
어려움8문자열문자열 매칭정렬해시맵아직 제출이 없습니다시간 제한2초메모리 제한512 MB
문제 설명
예제3
문제
베라는 a부터 z까지 소문자 한 글자로 나타내는 레시피 26가지를 안다. 베라는 원형 식탁에 요리 N 개를 놓아 연회를 준비한다. 베라는 게을러서 요리마다 레시피 26가지 중 하나를 독립적으로 균등하게 무작위로 고른다. 연회는 길이가 N 인 문자열 S 로 나타내고, S 의 i 번째 문자가 i 번 요리의 레시피다. 2≤j≤N 인 j 에 대해 j 번 요리는 j−1 번 요리의 시계 방향 옆자리에 있고, 1번 요리는 N 번 요리의 시계 방향 옆자리에 있다.
표본은 식탁에 연속으로 놓인 요리의 레시피를 시계 방향이나 반시계 방향 중 한쪽으로 읽은 수열이다. 표본의 길이는 1 이상 N 이하다. 두 표본은 길이가 같고 모든 위치의 레시피가 같을 때 같은 표본이다.
서로 다른 표본이 몇 개인지 구하여라.
입력
첫째 줄에 정수 N 이 주어진다. (2≤N≤50000)
둘째 줄에 소문자 N 개로 이루어진 문자열 S 가 주어진다.
출력
서로 다른 표본의 개수를 한 줄에 출력한다.
노트
N=3 이고 S 가 aba 이면 서로 다른 표본은 a, b, aa, ab, ba, aba, aab, baa로 모두 8개다.
N=6 이고 S 가 ondrej 이면 rejo 와 drejon 은 시계 방향 표본이고, nojer 와 dnojer 는 반시계 방향 표본이다.