만드는 중입니다

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

키보드 솔로

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

요약
입력된 단어가 키 실수 한 번으로 만들어질 수 있는 사전 단어를 찾아, 사전순으로 최대 5개까지 출력합니다.
난이도

보통10점 중 6점

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

문제

미니스트리 오브 패스트 프린팅 앤 롱 스트링스(MBPDS) 직원들이 새로운 문제로 걱정하고 있다. 최근 입력하는 텍스트가 어려워져서 실수가 늘었다. 다행히 MBPDS 직원들은 훈련이 잘 되어 있어서, 어떤 단어에서든 실수는 최대 한 번만 한다.

발생할 수 있는 실수는 다음과 같다.

  • 필요한 키 대신 이웃한 키를 누른다.
  • 필요한 키를 누르지 않는다.
  • 필요한 키 앞에서 이웃한 키 중 하나를 누른다.
  • 필요한 키 뒤에서 이웃한 키 중 하나를 누른다.

한 키의 이웃은 왼쪽, 오른쪽, 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래의 여섯 개 키다. 키보드는 그림에 나온 표준 QWERTY 키보드다.

부처는 오류 수정을 자동화하려고 한다. 실수가 최대 한 번인 단어가 주어졌을 때, 입력되었을 수 있는 사전 단어를 출력하는 프로그램을 작성하라.

입력

첫 줄에 사전의 단어 수 NN (1≤N≤5⋅1041 \le N \le 5 \cdot 10^4)이 주어진다. 다음 NN개 줄에는 사전의 단어가 한 줄에 하나씩 주어진다. 사전의 단어는 모두 서로 다르다.

다음 줄에는 검사할 단어 수 MM (1≤M≤5⋅1041 \le M \le 5 \cdot 10^4)이 주어진다. 다음 MM개 줄에는 검사할 단어가 한 줄에 하나씩 주어진다.

모든 단어는 대문자 라틴 알파벳으로 이루어져 있다. 입력 파일에는 빈 줄이 없고, 크기는 1메가바이트를 넘지 않는다.

출력

수정할 단어마다 한 줄 이상으로 이루어진 블록을 출력한다. 블록의 첫 줄에는 입력된 단어에 해당할 수 있는 사전 단어의 개수 CiC_i를 출력한다. 이어서 그 사전 단어들을 사전 순서대로 한 줄에 하나씩 출력한다. Ci>5C_i > 5이면 처음 다섯 개 단어만 출력한다.

예제2

  1. 예제 1

    입력
    7
    solving
    contests
    is
    what
    makes
    us
    happy
    3
    solvung
    js
    qwerty
    
    예상 출력
    1
    solving
    2
    is
    us
    0
    
  2. 예제 2

    입력
    6
    letterq
    letterw
    lettere
    letterr
    lettert
    lettery
    2
    letter
    lertterq
    
    예상 출력
    6
    lettere
    letterq
    letterr
    lettert
    letterw
    1
    letterq