Module: 前缀函数、Z函数


Problem

9 /10


几乎没有前缀的代码

Problem

<分区>

在编码理论中,不带前缀的代码通常用作单词集,其中没有一个是前缀。如果 α 是从 β 通过删除末尾有零个或多个字符。例如,单词 aababa 是单词 aba 的前缀。例如,单词集abaaabac是一个无前缀的代码,而abac的集, aba, ba 不存在,因为单词 aba 是单词 abac 的前缀。

 Decipher 教授在无用信息研究实验室工作,研究他新发明的近前缀代码。如果一组词中任意两个词的最大公共前缀长度不超过k,则该词集称为k 级的几乎无前缀代码。例如,集合abacabcba是一个几乎没有前缀的二级代码,而集合abac ,abab,ba不存在因为abacabab的最长公共前缀是3.

 Decifro 教授为他的实验室助理布置的下一个任务如下:给定一组单词和一个数字k,要求从给定的单词中进行选择words 的最大集合,几乎是无前缀级别的代码k。你作为一名初级实验室助理,被分配编写相应的程序。

 
输入
输入文件的第一行包含两个整数:nk 给定集合中的单词数和要构建的几乎无前缀代码的级别( \(1<= n <= 100000\), \(0 <= k <= 200\) ).接下来的 n 行每行包含一个单词。单词由拉丁字母表的小写字母组成。每个单词的长度为 1 到 200 个字符。所有单词的总长度不超过\(10^6\)。所有的词都是不同的。
 
输出
输出单个数字m - 从给定集合中可以选择的最大单词数,以便它们形成几乎没有前缀的k级代码。 

 

例子
<头> <日># <正文>
输入 输出
1
6 2
阿巴
巴卡巴
马尼拉
巴卡
算盘
卡巴
3