Соло на клавиатуре

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

요약
오타가 난 단어마다 QWERTY 인접 키 오류 하나로 만들어질 수 있는 사전 단어를 최대 다섯 개 찾는다.
난이도

보통10점 중 6점

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

문제

Работники Министерства Быстрой Печати и Длинных Строк озабочены новой проблемой. В последнее время сложность набираемых ими текстов существенно увеличилась, и они стали допускать ошибки. К счастью, уровень подготовки в МБПДС высокий, поэтому любой работник в любом слове допускает не более одной ошибки.

Ошибки, которые могут допустить работники МБПДС, таковы:

  • вместо нужной клавиши нажата соседняя;
  • клавиша не нажата;
  • перед нужной клавишей нажата одна из соседних клавиш;
  • после нужной клавиши нажата одна из соседних клавиш;

Для клавиши на клавиатуре соседними считаются шесть клавиш: слева, справа, слева сверху, справа сверху, слева снизу, справа снизу. Клавиатура является стандартной 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 строк содержит по одному слову для проверки.

Все слова в файле состоят из прописных латинских букв. Во входном файле не содержится пустых строк. Размер входного файла не превышает одного мегабайта. q

출력

Для каждого из слов, подлежащих исправлению, выведите информацию о возможных его исправлениях. Эта информация состоит из блока, включающего одну или несколько строк. Первая строка блока содержит одно целое число C_iC\_i --- число словарных слов, которые могли бы соответствовать введенному слову. Далее необходимо вывести эти словарные слова в лексикографическом порядке, по одному на каждой строке. Если C_i>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