시간 제한
메모리 제한
시간 제한
1초
메모리 제한
128 MB
k명의 참가자가 사다리 타기를 한다. 참가자는 A부터 시작하는 k개의 대문자로 나타내며, 처음 순서는 항상 A, B, C, ... 순서이다.
아래 그림은 k = 10이고 세로줄 10개와 가로줄 5개가 있는 사다리의 한 경우를 보여준다.

각 가로줄에서 *는 그 위치에 가로 막대가 없다는 뜻이고, -는 이웃한 두 세로줄을 잇는 가로 막대가 있다는 뜻이다. 위 사다리를 따라 내려가면 최종 순서는 왼쪽부터 A, C, G, B, E, D, J, F, I, H가 된다.
참가자는 세로줄을 따라 내려가다가 가로 막대를 만나면 그 막대를 따라 옆 세로줄로 이동한 뒤 계속 내려간다. 이 규칙 때문에 한 가로줄에서 서로 이웃한 두 위치에 모두 가로 막대가 있을 수 없다.

사다리의 가로줄 중 정확히 하나가 숨겨져 있다. 숨겨진 줄의 각 위치에 가로 막대를 놓을지 정해서, 사다리를 모두 내려갔을 때 주어진 최종 순서가 나오게 해야 한다.
입력에서 각 가로줄은 길이 k-1의 문자열로 주어진다. 가로 막대가 없는 위치는 *, 있는 위치는 -로 표시한다. 숨겨진 가로줄은 길이 k-1의 물음표 문자열로 표시한다.
첫째 줄에 참가자 수 k가 주어진다. (3 <= k <= 26)
둘째 줄에 전체 가로줄 수 n이 주어진다. (3 <= n <= 1,000)
셋째 줄에 사다리를 모두 내려간 뒤의 최종 순서를 나타내는 길이 k의 대문자 문자열이 주어진다.
다음 n개의 줄에는 사다리의 각 가로줄이 위에서부터 순서대로 주어진다. 각 줄은 *와 -로 이루어진 길이 k-1의 문자열이거나, 숨겨진 줄을 뜻하는 길이 k-1의 물음표 문자열이다.
주어진 최종 순서를 만들 수 있도록 숨겨진 가로줄을 복원하여 출력한다. 출력은 *와 -로 이루어진 길이 k-1의 문자열이어야 한다.
어떤 방식으로 숨겨진 줄을 구성해도 주어진 최종 순서를 만들 수 없다면, x로만 이루어진 길이 k-1의 문자열을 출력한다.