Module: 접두사 함수, Z 함수


Problem

9 /10


접두사가 거의 없는 코드

Problem

<사업부>

코딩 이론에서 접두어가 없는 코드는 접두어가 아닌 단어 집합으로 자주 사용됩니다. α라는 단어는 β에서 α를 삭제하여 얻은 경우 β라는 단어의 접두사라고 합니다. 끝에 0개 이상의 문자가 있습니다. 예를 들어 a, ababa라는 단어는 aba라는 단어의 접두사입니다. 예를 들어 aba, aabac 단어 집합은 접두사가 없는 코드인 반면 abac 집합은 , aba, baaba라는 단어가 abac라는 단어의 접두사이므로 존재하지 않습니다.

 Decipher 교수는 쓸모없는 정보 연구실에서 근무하며 접두사 코드에 대한 그의 새로운 발명을 연구합니다. 단어 집합에서 두 단어의 최대 공통 접두어 길이가 k를 초과하지 않는 경우 수준 k의 접두어가 거의 없는 코드라고 합니다. 예를 들어 집합 abac, abc, ba는 접두사가 거의 없는 수준 2 코드이고 집합 abac , abab, baabac abab 의 가장 긴 공통 접두어가 3이므로 존재하지 않습니다.

 Decifro 교수가 실험실 조교에게 설정한 다음 작업은 다음과 같습니다. 일련의 단어와 숫자 k가 주어지면 주어진 단어 중에서 선택해야 합니다. 접두어가 거의 없는 수준 코드 k인 최대 집합입니다. 귀하는 주니어 실험실 조교로서 해당 프로그램을 작성하도록 지정되었습니다.

 
입력
입력 파일의 첫 번째 줄에는 두 개의 정수가 포함됩니다. \(1<= n <= 100000\), \(0 <= k <= 200\) ). 다음 n 줄에는 각각 하나의 단어가 포함됩니다. 단어는 라틴 알파벳의 소문자로 구성됩니다. 각 단어의 길이는 1~200자입니다. 모든 단어의 총 길이는 \(10^6\)을 초과하지 않습니다. 모든 단어가 다릅니다.
 
출력
단일 숫자 m 출력 - 주어진 세트에서 거의 접두사가 없는 k 수준 코드를 형성하도록 선택할 수 있는 최대 단어 수입니다. 

 

<헤드> <일># <몸>
입력 출력
1
6 2
아바
바카바
아바카바
바카
abac
카바
3