만드는 중입니다

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

거의 접두사 없는 부호

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

요약
주어진 단어들에서 임의의 두 단어의 최장 공통 접두사 길이가 k 이하가 되도록 가장 큰 부분집합을 고른다.
난이도

어려움10점 중 8점

유형
트라이, 트리, 동적 계획법, 그리디
정답자
아직 제출이 없습니다

문제

부호 이론에서는 접두사 없는 부호를 자주 사용한다. 이는 어떤 단어도 다른 단어의 접두사가 아닌 단어 집합을 말한다. (단어 α\alpha가 단어 β\beta의 접두사라는 것은 β\beta의 끝에서 0개 이상의 문자를 지워 α\alpha를 얻을 수 있다는 뜻이다. 예를 들어 <<>>, <>, <>, <>는 모두 <>의 접두사이다.) 예를 들어 단어 <>, <>, <>의 집합은 접두사 없는 부호이지만, <>, <>, <>의 집합은 <>가 <>의 접두사이므로 접두사 없는 부호가 아니다.

교수 데시프로는 무용 정보 연구소에서 일하며 자신의 새 발명품인 거의 접두사 없는 부호를 연구한다. 단어 집합에서 임의의 두 단어의 최장 공통 접두사의 길이가 kk를 넘지 않으면 그 집합을 수준 kk의 거의 접두사 없는 부호라고 한다. 예를 들어 <>, <>, <>의 집합은 수준 2의 거의 접두사 없는 부호이지만, <>, <>, <>의 집합은 <>와 <>의 최장 공통 접두사의 길이가 3이므로 수준 2의 거의 접두사 없는 부호가 아니다.

데시프로 교수가 조교들에게 내준 다음 과제는 주어진 단어 집합과 수 kk에 대해, 주어진 단어들 중에서 수준 kk의 거의 접두사 없는 부호가 되는 최대 집합을 고르는 것이다. 최하급 조교인 당신에게는 이에 해당하는 프로그램을 작성하는 일이 맡겨졌다.

입력

입력 파일의 첫째 줄에는 두 정수 nn과 kk가 주어진다. nn은 주어진 집합에 있는 단어의 수이고, kk는 만들어야 하는 거의 접두사 없는 부호의 수준이다 (1≤n≤100 0001 \le n \le 100\,000, 0≤k≤2000 \le k \le 200). 다음 nn개의 줄에는 단어가 하나씩 주어진다. 단어는 라틴 알파벳 소문자로 이루어진다. 각 단어의 길이는 1에서 200까지이다. 모든 단어의 길이의 합은 10610^6을 넘지 않는다. 모든 단어는 서로 다르다.

출력

출력 파일의 첫째 줄에는 주어진 집합에서 골라 수준 kk의 거의 접두사 없는 부호를 이루도록 할 수 있는 최대 단어 수 mm을 출력한다. 다음 mm개의 줄에는 고른 단어를 출력한다.

예제1

  1. 예제 1

    입력
    6 2
    aba
    bacaba
    abacaba
    baca
    abac
    caba
    
    예상 출력
    3
    aba
    bacaba
    caba