탈의실
시간 제한6초메모리 제한512 MB
원형 문자열에서 길이 K인 부분 문자열을 골라 모든 문자를 덮고 그중 사전식 최댓값을 최소로 만듭니다.
문제
바이너리 카지노에는 여러 이상한 방이 있는데, 그중 하나가 탈의실이다. 하루에도 여러 번, 최소 두 번(근무 시작 전과 종료 후) 탈의실에 들어가야 한다. 탈의실에 들어가는 데 열쇠나 출입 코드는 필요 없다. 대신 완전히 새로운 보안 잠금 장치가 있다.
이 잠금 장치는 탈의실에 들어갈 때마다 생성된 퍼즐을 제시하며, 풀어야 한다. 퍼즐을 푸는 데 오랜 시간이 걸리기 때문에 이 장치는 외부인이 탈의실에 들어오는 것을 막아 준다. 카지노에서 얼마간 일한 직원들만이 퍼즐을 익히게 된다.
카지노에서 일한 지 2주밖에 되지 않은 당신은 퍼즐을 충분히 빨리 풀지 못해 이미 세 번 지각했다. 그래서 퍼즐을 푸는 프로그램을 작성하기로 했다. 퍼즐은 다음과 같다.
길이 의 순환 문자열이 주어지며, 소문자 영어 알파벳으로 구성된다. 길이 의 부분 문자열(연속한 문자 구간)을 골라 표시하여 문자열의 모든 문자가 표시될 때까지 반복한다. 부분 문자열을 표시해도 원래 문자열은 바뀌지 않으며, 각 문자는 여러 번 표시될 수 있다. 골라진 부분 문자열 중 사전순으로 최대인 부분 문자열을 출력해야 한다. 또한 출력하는 부분 문자열은 사전순으로 최소여야 한다.
예를 들어 문자열이 "acdb"이고 , 이라고 하자. 부분 문자열 "acd"와 "bac"를 골라 문자열 전체를 표시할 수 있다. 퍼즐의 답은 "bac"이다.
입력
첫째 줄에 두 정수 과 가 주어진다. (, ) 은 문자열의 길이, 는 표시하는 부분 문자열의 길이이다. 둘째 줄에 길이 의 소문자 영어 알파벳으로 이루어진 순환 문자열이 주어진다.
출력
골라진 부분 문자열 중 사전순으로 최대인 부분 문자열을 출력한다. 이때 결과는 사전순으로 최소여야 한다.