만드는 중입니다

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

역삼역

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

요약
문자열 S의 부분 문자열 중 길이가 K 이상인 팰린드롬을 포함하는 서로 다른 부분 문자열의 개수를 구합니다.
난이도

어려움10점 중 8점

유형
문자열, 문자열 매칭, 정렬
정답자
아직 제출이 없습니다

문제

이 문제는 재미있습니다. 제가 좋아하는 문자열 퀴즈 같아요. 길이 NN인 문자열 SS와 양의 정수 KK가 주어집니다. 길이 KK 이상인 팰린드롬을 부분 문자열(substring)로 가지는 문자열을 "영우 문자열"이라고 정의합니다. 그러면 SS의 서로 다른 부분 문자열 중에서 영우 문자열은 모두 몇 개일까요?

팰린드롬은 "기러기", "토마토", "스위스", "인도인", "별똥별", "우영우"처럼 거꾸로 읽어도 같은 문자열입니다. 부분 문자열은 빈 문자열이 아닌, 문자열의 연속된 일부분을 뜻합니다.

예를 들어, SS가 "banana"이고 K=3K=3인 경우 SS의 서로 다른 부분 문자열은 다음과 같습니다.

  • "a", "an", "ana", "anan", "anana"
  • "b", "ba", "ban", "bana", "banan", "banana"
  • "n", "na", "nan", "nana"

이 중 영우 문자열은 다음 8개입니다.

  • "ana", "anan", "anana"
  • "bana", "banan", "banana"
  • "nan", "nana"

입력

첫째 줄에 SS의 길이 NN과 양의 정수 KK가 공백을 사이에 두고 차례로 주어집니다. (1≤K≤N≤505 505)\left(1\leq K\leq N\leq 505\,505\right)

둘째 줄에 영어 소문자로만 이루어진 문자열 SS가 주어집니다.

출력

첫째 줄에 SS의 서로 다른 부분 문자열 중에서 영우 문자열의 개수를 출력합니다.

힌트

개수에만 초점을 맞추면 문제를 풀 수 없습니다. 핵심을 봐야 돼요.

예제1

  1. 예제 1

    입력
    6 3
    banana
    
    예상 출력
    8