잊어버린 비밀번호
시간 제한1초메모리 제한128 MB
일부 글자와 물음표로 주어진 길이 L 패턴에 맞으면서 사전 단어들의 연결로 만들 수 있는 문자열 중 사전순으로 가장 앞선 것을 찾는다.
문제
Bessie는 자신의 비밀번호를 잊어버렸지만, 비밀번호에 대한 몇 가지 유용한 사실은 기억하고 있다.
비밀번호 는 소문자 로마자로 이루어진 길이 의 문자열이다(). 이 비밀번호는 사전에 있는 서로 다른 개의 단어() 중 하나 이상을 이어 붙여 만들 수 있으며, 같은 단어를 여러 번 사용해도 된다. 사전의 각 단어는 길이가 이상 이하인 소문자('a'부터 'z'까지)의 나열이다.
Bessie는 비밀번호의 일부 글자와 그 위치도 기억하고 있다. 이 부분 정보는 길이 의 문자열로 주어지며, 각 자리에는 기억하는 정확한 글자가 있거나, 기억하지 못하는 자리라면 ? 문자가 있다.
사전과 Bessie가 기억하는 부분 정보가 주어질 때, 다음 두 조건을 모두 만족하는 비밀번호를 찾아라.
- 기억하는 위치에는 기억하는 글자가 정확히 놓여 있다(
?자리에는 임의의 소문자가 올 수 있다). - 사전의 단어를 하나 이상 이어 붙인 문자열이다.
두 조건을 모두 만족하는 비밀번호가 여러 개라면 사전순으로 가장 작은 것을 출력한다. 유효한 비밀번호가 적어도 하나 존재함이 보장된다.
입력
- 첫째 줄: 공백으로 구분된 두 정수 과 .
- 둘째 줄: Bessie가 기억하는 부분 정보를 나타내는 길이 의 문자열. 기억하는 자리는 소문자, 기억하지 못하는 자리는
?이다. - 셋째 줄부터 째 줄까지: 째 줄에는 사전의 번째 단어 가 주어진다.
출력
- 부분 정보와 일치하면서 사전의 단어들을 이어 붙여 만들 수 있는, 사전순으로 가장 작은 비밀번호를 한 줄에 출력한다.