디폴트 시의 도심으로 매일 들어오는 차량은 주차 공간보다 훨씬 많다. 시 의회는 차량이 도심 도로에 넘쳐 주차되는 문제를 막으려고 주차 요금제를 도입했다. 요금 징수는 자동 판독기가 맡는다. 판독기는 차량 번호판을 촬영해 번호판에 적힌 숫자와 문자를 인식하고, 그 코드를 차량 등록 데이터베이스에서 찾아 요금을 냈는지 확인하거나 내지 않은 차주에게 과태료를 부과한다.
요금제를 시행하자마자 부정 행위가 나타났다. 일부 차주는 주차하는 동안 번호판의 숫자나 문자 몇 개를 종이로 가린다. 그러면 지금의 판독기는 등록 코드를 온전히 읽지 못해 과태료를 부과할 수 없다.
시 의회는 이 부정 행위를 막을 방법을 설계하려고 부정 단속반(FBI)을 꾸렸다. 단속반이 택한 방향은 차종이나 색상처럼 판독기가 인식하는 차량 특징을 늘리고, 그 시각에 다른 곳에 있었다고 확인된 차량을 후보에서 빼는 것이다. 이 정보로 등록 데이터베이스에서 뒤져야 할 범위를 좁힐 수 있다.
당신은 단속반에서 일한다. 동료들이 차량 특징을 분석하는 인식 소프트웨어를 이미 다 만들어 두어서, 촬영된 차의 것일 수 있는 등록 코드 목록을 당신에게 넘겨준다. 이 목록과 번호판에서 읽어낸 코드를 받아 일치하는 등록 코드를 모두 찾아라. 읽어낸 코드는 일부 자리를 인식하지 못한 상태일 수 있다.
첫째 줄에 판독기가 읽어낸 코드 9글자가 주어진다. 각 글자는 숫자, 영어 대문자, 또는 *(별표)다. 별표는 판독기가 읽지 못한 자리를 뜻한다.
둘째 줄에 데이터베이스에서 가져온 등록 코드의 개수 n (1≤n≤1000)이 주어진다.
다음 n개 줄에 등록 코드가 한 줄에 하나씩 주어진다. 등록 코드는 숫자와 영어 대문자로 이루어진 9글자다. n개 코드는 모두 다르다.
첫째 줄에 판독된 코드와 일치하는 데이터베이스 코드의 개수 k (0≤k≤n)를 출력한다. 9개 자리마다 두 코드의 글자가 같거나 판독된 코드의 글자가 *이면 두 코드는 일치한다.
다음 k개 줄에 일치하는 코드를 입력에 나온 순서대로 한 줄에 하나씩 출력한다.