만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

로봇 조립기

시간 제한1초메모리 제한1024 MB

요약
N개의 작업 종류로 이루어진 문자열과 메모리 크기 K가 주어질 때, K글자 순환 패턴과 시작 위치를 골라 로봇이 최소 K+1개의 작업을 수행하도록 하는 경우의 수를 센다.
난이도

어려움10점 중 8점

유형
문자열, 누적 합, 조합론, 문자열 매칭
정답자
아직 제출이 없습니다

문제

한 대학의 학생들이 항공기 엔진 조립 과정을 부분적으로 자동화할 로봇을 설계했다.

엔진 조립 과정에는 26가지 종류의 연산이 나타나며, 각각 라틴 소문자 하나로 표시된다. 조립 과정은 NN개의 연산으로 이루어진다. 로봇은 조립 과정에서 연속한 일부 연산을 수행하는 데 한 번만 사용한다.

로봇의 메모리는 KK개의 칸으로 이루어지고, 각 칸에는 연산 하나가 들어 있다. 연산은 메모리에 저장된 순서대로 첫 번째부터 차례로 수행된다. 마지막 연산을 수행한 뒤 로봇은 첫 번째 연산부터 작업을 이어 간다. 로봇은 몇 개의 연산을 수행한 뒤에도 멈출 수 있다. 로봇의 사용이 경제적으로 타당하다는 것은 로봇이 적어도 (K+1)(K + 1)개의 연산을 수행하는 경우를 말한다.

조립 과정이 주어졌을 때 경제적으로 타당한 로봇 사용 방법의 수를 구하는 프로그램을 작성하라.

입력

입력 파일의 첫째 줄에는 수 KK (1⩽K<N1 \leqslant K < N)가 쓰여 있다. 이는 로봇의 메모리에 쓸 수 있는 연산의 개수이다.

둘째 줄은 NN (2⩽N⩽200 0002 \leqslant N \leqslant 200\,000)개의 라틴 소문자로 이루어지며, 연산, 즉 엔진의 조립 과정을 나타낸다. 같은 종류의 연산은 같은 문자로 표시된다.

출력

출력 파일에는 경제적으로 타당한 로봇 사용 방법의 수를 나타내는 정수 하나를 써야 한다.

제한

  • N⩽200 000N \leqslant 200\,000

힌트

첫 번째 예에서 다음 연산열에 로봇을 사용하는 것이 경제적으로 타당하다.

  • 2번째부터 4번째까지: <>, 로봇의 메모리에는 연산 <>가 들어 있다;
  • 4번째부터 6번째까지: <>, 로봇의 메모리에는 <>;
  • 6번째부터 8번째까지: <>, 로봇의 메모리에는 <>;
  • 6번째부터 9번째까지: <>, 로봇의 메모리에는 <>;
  • 7번째부터 9번째까지: <>, 로봇의 메모리에는 <>.

예제2

  1. 예제 1

    입력
    2
    zabacabab
    
    예상 출력
    5
    
  2. 예제 2

    입력
    2
    abc
    
    예상 출력
    0