만드는 중입니다

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

Tavan

면접 대비

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

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

보통10점 중 6점

유형
조합론, 그리디, 수학, 구현
정답자
아직 제출이 없습니다

문제

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

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

입력

첫째 줄에 정수 NN, MM, KK, XX가 주어진다. (1≤N≤5001 \le N \le 500, 1≤M≤N1 \le M \le N, 1≤K≤261 \le K \le 26, 1≤X≤1091 \le X \le 10^9)

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

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

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

출력

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

힌트

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

예제2

  1. 예제 1

    입력
    9 2 3 7
    po#olje#i
    sol
    znu
    
    예상 출력
    posoljeni
    
  2. 예제 2

    입력
    4 1 2 2
    #rak
    zm
    
    예상 출력
    zrak