거의 접두사 없는 부호
시간 제한2초메모리 제한1024 MB
주어진 단어들에서 임의의 두 단어의 최장 공통 접두사 길이가 k 이하가 되도록 가장 큰 부분집합을 고른다.
문제
부호 이론에서는 접두사 없는 부호를 자주 사용한다. 이는 어떤 단어도 다른 단어의 접두사가 아닌 단어 집합을 말한다. (단어 가 단어 의 접두사라는 것은 의 끝에서 0개 이상의 문자를 지워 를 얻을 수 있다는 뜻이다. 예를 들어 <<>>, <>, <>, <>는 모두 <>의 접두사이다.) 예를 들어 단어 <>, <>, <>의 집합은 접두사 없는 부호이지만, <>, <>, <>의 집합은 <>가 <>의 접두사이므로 접두사 없는 부호가 아니다.
교수 데시프로는 무용 정보 연구소에서 일하며 자신의 새 발명품인 거의 접두사 없는 부호를 연구한다. 단어 집합에서 임의의 두 단어의 최장 공통 접두사의 길이가 를 넘지 않으면 그 집합을 수준 의 거의 접두사 없는 부호라고 한다. 예를 들어 <>, <>, <>의 집합은 수준 2의 거의 접두사 없는 부호이지만, <>, <>, <>의 집합은 <>와 <>의 최장 공통 접두사의 길이가 3이므로 수준 2의 거의 접두사 없는 부호가 아니다.
데시프로 교수가 조교들에게 내준 다음 과제는 주어진 단어 집합과 수 에 대해, 주어진 단어들 중에서 수준 의 거의 접두사 없는 부호가 되는 최대 집합을 고르는 것이다. 최하급 조교인 당신에게는 이에 해당하는 프로그램을 작성하는 일이 맡겨졌다.
입력
입력 파일의 첫째 줄에는 두 정수 과 가 주어진다. 은 주어진 집합에 있는 단어의 수이고, 는 만들어야 하는 거의 접두사 없는 부호의 수준이다 (, ). 다음 개의 줄에는 단어가 하나씩 주어진다. 단어는 라틴 알파벳 소문자로 이루어진다. 각 단어의 길이는 1에서 200까지이다. 모든 단어의 길이의 합은 을 넘지 않는다. 모든 단어는 서로 다르다.
출력
출력 파일의 첫째 줄에는 주어진 집합에서 골라 수준 의 거의 접두사 없는 부호를 이루도록 할 수 있는 최대 단어 수 을 출력한다. 다음 개의 줄에는 고른 단어를 출력한다.