几乎没有前缀的代码
Problem
<分区>
在编码理论中,不带前缀的代码通常用作单词集,其中没有一个是前缀。如果 α
是从 β
通过删除末尾有零个或多个字符。例如,单词 a
、ab
和 aba
是单词 aba
的前缀。例如,单词集aba
、aa
和bac
是一个无前缀的代码,而abac
的集, aba
, ba
不存在,因为单词 aba
是单词 abac
的前缀。
Decipher 教授在无用信息研究实验室工作,研究他新发明的近前缀代码。如果一组词中任意两个词的最大公共前缀长度不超过k
,则该词集称为k
级的几乎无前缀代码。例如,集合abac
、abc
、ba
是一个几乎没有前缀的二级代码,而集合abac
,abab
,ba
不存在因为abac
和abab
的最长公共前缀是3.
Decifro 教授为他的实验室助理布置的下一个任务如下:给定一组单词和一个数字k
,要求从给定的单词中进行选择words 的最大集合,几乎是无前缀级别的代码k
。你作为一名初级实验室助理,被分配编写相应的程序。
输入
输入文件的第一行包含两个整数:n
和k
给定集合中的单词数和要构建的几乎无前缀代码的级别( \(1<= n <= 100000\), \(0 <= k <= 200\) ).接下来的 n
行每行包含一个单词。单词由拉丁字母表的小写字母组成。每个单词的长度为 1 到 200 个字符。所有单词的总长度不超过\(10^6\)。所有的词都是不同的。
输出
输出单个数字
m
- 从给定集合中可以选择的最大单词数,以便它们形成几乎没有前缀的
k
级代码。
例子
<头>
<日>#日>
输入 |
输出 |
东西>
<正文>
1 |
6 2
阿巴
巴卡巴
马尼拉
巴卡
算盘
卡巴
|
3 |
表>