만드는 중입니다

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

근로장학생

면접 대비

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

요약
각 문장에서 사전 단어가 시작하는 위치마다 그 뜻을 순서대로 이어 붙여 출력합니다. 같은 위치에서 여러 단어가 맞으면 사전순으로 앞선 단어의 뜻을 씁니다. 맞는 단어가 하나도 없으면 -1을 출력합니다.
난이도

쉬움10점 중 3점

유형
해시맵, 문자열, 구현
정답자
아직 제출이 없습니다

문제

하루는 문장 안에 있는 영어 단어를 찾아 그 뜻을 알려주는 프로그램을 만드는 근로장학생이 되었다.

하지만 하루는 너무 귀찮아서 프로그램을 만들지 않았고, 제작 마감 하루 전에 당신에게 급하게 프로그램 제작을 도와달라고 요청했다. 하루를 도와주자.

  • 각 정보는 (Qi,Ai)(Q_i, A_i)로 이루어져 있으며, QiQ_i는 영어 단어, AiA_i는 그 단어의 뜻이다.
  • NN개의 정보와 MM개의 문장이 주어질 때, 프로그램은 각 문장에 대해 다음과 같이 답한다.
    • 문장 SS의 가장 왼쪽 문자의 위치를 11, 가장 오른쪽 문자의 위치를 ∣S∣|S|라고 하자. 이때 ∣S∣|S|는 문장 SS의 길이이다.
    • 프로그램은 각 문장 SS를 첫 번째 문자부터 마지막 문자까지 S1,S2,⋯ ,S∣S∣S_1, S_2, \cdots, S_{|S|} 순서로 읽는다.
    • 문장을 읽는 도중, 위치 kk에서 k,k+1,⋯ ,k+∣Qi∣−1k, k+1, \cdots, k+|Q_i|-1 위치의 문자를 차례로 이어 붙였을 때 QiQ_i를 만들 수 있다면 AiA_i로 답해야 한다. 위치 kk에서 만들 수 있는 QiQ_i가 여러 개라면, 사전순으로 앞선 QiQ_i의 AiA_i로 답한다.
    • 한 문장에 대해 답해야 하는 AiA_i는 여러 개일 수 있다.

예를 들어, 정보 (ABC, X), (A, Y), (CDE, Z)가 있고 질문이 ABCDE라면 프로그램은 YXZ로 답해야 한다.

입력

첫 번째 줄에 정보의 개수 NN과 문장의 개수 MM이 공백으로 구분되어 주어진다. (1≤N≤1 0001 \leq N \leq 1\ 000; 1≤M≤101 \leq M \leq 10)

두 번째 줄부터 NN개의 줄에 걸쳐 QiQ_i와 AiA_i가 공백으로 구분되어 주어진다. (1≤∣Qi∣,∣Ai∣≤101 \leq |Q_i|, |A_i| \leq 10; i≠ji \neq j이면 Qi≠QjQ_i \neq Q_j)

그다음 줄부터 MM개의 줄에 걸쳐 문자열 SiS_i가 주어진다. (1≤∣S∣≤1001 \leq |S| \leq 100)

입력되는 모든 문자열은 영어 대문자로만 이루어져 있고, 공백은 없다.

출력

각 문자열 SiS_i에 대해 프로그램이 답해야 하는 문자열을 한 줄에 하나씩 출력한다.

답할 수 있는 문자열이 없다면 대신 -1을 출력한다.

예제2

  1. 예제 1

    입력
    3 1
    ABC X
    A Y
    CDE Z
    ABCDE
    
    예상 출력
    YXZ
    
  2. 예제 2

    입력
    3 3
    KPSC WELCOME
    KOOK HELLOWORLD
    KOOKMIN FIGHTING
    KPSCWELCOME
    CONTEXT
    KOOKMINUNIVERSITY
    
    예상 출력
    WELCOME
    -1
    HELLOWORLDFIGHTING