컴퓨터 대화

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

네트워크로 연결된 컴퓨터 세 대가 있다. 한 대는 서버이고 나머지 두 대는 클라이언트이다. 서버에는 여러 개의 파일이 저장되어 있으며, 각 파일의 전체 이름은 서로 다르다. 전체 이름은 이름확장자 두 부분으로 이루어지며 이름.확장자 형태로 쓴다. 두 클라이언트는 서버에 있는 모든 파일의 전체 이름을 알고 있다.

서버는 파일 하나를 고른 뒤, 그 파일 전체 이름의 이름 부분을 한 클라이언트에게, 확장자 부분을 다른 클라이언트에게 보낸다. 두 클라이언트는 서버가 어떤 파일을 골랐는지(즉, 파일의 전체 이름)를 알아내려 하지만, 매우 제한된 방식으로만 대화할 수 있다. 두 사람은 번갈아 가며 메시지를 주고받되, 할 수 있는 말은 오직 "나는 아직 전체 이름을 모른다" 뿐이다. 클라이언트는 자신이 아직 전체 이름을 확정하지 못했을 때에만 이 메시지를 보낸다. 이름 부분을 받은 클라이언트는 항상 상대(확장자를 받은 클라이언트)가 먼저 말하기를 기다린다. 이 주고받음은 둘 중 한 명이 전체 이름을 알아내거나 두 사람이 포기할 때까지 이어진다.

당신은 서버에 있는 모든 파일의 전체 이름을 알고 있으며, 두 클라이언트의 대화를 엿듣고 있다. 주고받은 메시지의 개수가 주어질 때, 서버가 골랐을 수 있는 파일이 어떤 것들인지 판별하라. 이런 파일들을 후보 파일이라고 한다.

입력

첫째 줄에 두 정수 NNMM이 공백으로 구분되어 주어진다. NN (1N10001 \le N \le 1000)은 서버에 있는 파일의 개수이고, MM (1M1001 \le M \le 100)은 두 클라이언트가 주고받은 "모른다" 메시지의 개수이다.

다음 NN개의 줄에는 각 줄마다 파일 하나의 전체 이름이 MS-DOS 8.3 형식과 비슷한 이름.확장자 꼴로 주어진다. 이름과 확장자는 모두 대문자(AZ)와 숫자(09)로만 이루어진다. 이름은 1자 이상 8자 이하이고, 확장자는 3자 이하이며 비어 있을 수도 있다. 확장자가 비어 있으면 구분용 점을 생략할 수 있다(따라서 FILEID.LICENCE는 모두 올바른 전체 이름이다). 같은 전체 이름은 두 번 이상 나타나지 않는다.

출력

첫째 줄에 후보 파일의 개수를 출력한다(후보가 없으면 0을 출력한다). 이어서 각 후보 파일의 전체 이름을 한 줄에 하나씩 출력한다. 후보들은 입력에 나온 것과 같은 순서로, 그리고 철자도 입력과 정확히 똑같이 출력해야 한다. 즉 입력에서 구분용 점이 생략되어 있었다면 출력에서도 생략하고, 반대의 경우도 마찬가지이다. 같은 파일을 두 번 이상 출력해서는 안 된다.