Tavan

물음표 자리마다 주어진 K개의 문자 중 하나를 넣어 만들 수 있는 문자열을 사전순으로 나열했을 때 X번째 문자열을 구한다.

보통6조합론그리디수학구현면접 대비아직 제출이 없습니다시간 제한1초메모리 제한32 MB

문제

젤코는 다락방에서 할머니의 오래된 편지를 읽다가 길이가 NN인 단어 하나를 발견했다. 잉크가 번져서 몇 글자를 읽을 수 없었기 때문에, 읽을 수 없는 글자 MM개를 모두 문자 #으로 바꿔 종이에 옮겨 적었다. 할머니는 그 종이를 보고 읽을 수 없는 자리마다 서로 다른 후보 글자 KK개를 알려 주었다. 젤코는 만들 수 있는 단어를 모두 공책에 적었고, 할머니는 찾는 단어가 그중 알파벳 순으로 XX번째라고 말했다.

알파벳 순서를 배운 날 젤코는 감기에 걸려 학교에 가지 못했다. 원래 단어를 구해서 젤코를 도와주자.

입력

첫째 줄에 정수 NN, MM, KK, XX가 주어진다. (1N5001 \le N \le 500, 1MN1 \le M \le N, 1K261 \le K \le 26, 1X1091 \le X \le 10^9)

둘째 줄에 젤코가 종이에 적은 길이 NN의 단어가 주어진다. 이 단어는 영어 소문자와 문자 #으로만 이루어지고, #은 정확히 MM개다.

다음 MM개의 줄에는 길이 KK의 단어가 한 개씩 주어진다. 그중 ii번째 줄은 왼쪽에서 ii번째 #을 대신할 수 있는 서로 다른 영어 소문자로 이루어지며, 알파벳 순으로 정렬되어 있지 않을 수도 있다.

XX는 만들 수 있는 단어의 총개수보다 항상 작거나 같다.

출력

첫째 줄에 알파벳 순으로 XX번째인 단어를 출력한다.

힌트

첫 번째 예제에서 만들 수 있는 단어를 알파벳 순으로 나열하면 다음과 같다: pololjeni, pololjeui, pololjezi, poooljeni, poooljeui, poooljezi, posoljeni, posoljeui, posoljezi.