베라와 LCS

문자열 A와 목표 K가 주어질 때, A의 앞 i글자와 A에서 가장 적게 나온 글자를 N-i개 붙인 문자열이 A와 LCS 길이 K를 갖는 가장 작은 i를 찾는다.

보통7문자열동적 계획법그리디아직 제출이 없습니다시간 제한2초메모리 제한256 MB

문제

베라는 최장 공통 부분 수열(LCS) 문제를 공부하고 있다.

문자열은 소문자 알파벳을 나열한 것이고, 비어 있어도 된다. 문자열 SS의 부분 수열은 SS에서 글자 몇 개를 지우고 남은 문자열이다. 하나도 지우지 않아도 되고 전부 지워도 된다. 예를 들어 vra, a, 빈 문자열, vera는 모두 vera의 부분 수열이다. 두 문자열 AABB의 최장 공통 부분 수열은 둘 모두의 부분 수열 중 길이가 가장 긴 문자열이다. 최장 공통 부분 수열은 여러 개일 수 있다. eaveraeats의 최장 공통 부분 수열이므로 이 두 문자열의 LCS 길이는 2다.

베라는 길이가 모두 NN인 두 문자열 AABB의 LCS 길이를 구하는 숙제를 받았다. 답을 KK라고 적어 두었는데 BB를 잃어버렸다. AAKK가 주어진다. AA와의 LCS 길이가 정확히 KK인 길이 NN짜리 문자열 BB를 찾아라. 베라가 계산을 틀렸다면 그런 BB는 존재하지 않는다.

입력

입력 형식은 다음과 같다.

N K
A
  • 1N20001 \le N \le 2000
  • 0K20000 \le K \le 2000
  • NNKK는 정수다
  • AA는 소문자 알파벳 NN개로 이루어진다

출력

AA와의 LCS 길이가 KK인 문자열은 여러 개일 수 있으므로, 다음 규칙이 정하는 문자열 하나만 정답으로 인정한다.

AA에 가장 적게 나오는 글자를 cc라고 하자. 그런 글자가 여럿이면 알파벳 순서가 가장 빠른 글자를 고른다. AA에 한 번도 나오지 않는 글자는 나온 횟수가 0이다. i=0,1,,Ni = 0, 1, \dots, N에 대해 BiB_iAA의 앞 ii글자 뒤에 ccNiN - i개 이어 붙인 문자열이라고 하자. AABiB_i의 LCS 길이가 정확히 KK인 가장 작은 ii를 찾아 BiB_i를 한 줄에 출력한다. 그런 ii가 없으면 WRONGANSWER를 출력한다.

힌트

조건을 만족하는 BB가 존재하는지는 NNKK만으로 정해지지 않는다. AA에 어떤 글자가 몇 번 나오는지에 따라 달라진다.