숨겨진 사다리 줄 복원
시간 제한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의 문자열을 출력한다.