SP2318 WORDS - Overlapping Words
题目描述
考虑一个有趣的游戏:你得到一个仅由小写字母(“a”到“z”)构成的单词 $W$。同时,你还有一组可供选择的单词,你可以进行以下操作:选择 $W$ 的一个后缀,并用该组单词中的另一个单词替换它(前提是这个单词包含该后缀作为它的前缀)。例如,如果当前单词是「acmicpc」,你可以选择将后缀「pc」替换为以「pc」开头的任意单词,比如「pcaaargh」,这样新的单词就变成「acmicpcaaargh」。你可以多次重复这一过程,只要每次选择和替换的后缀与替换词的新前缀匹配即可。当然,你也可以选择不进行任何替换。需注意,每次替换的后缀至少要有长度 1(不能替换为长度为 0 的后缀)。
此外,你还会得到一个整数 $L$,其中 $1 \le L \le 5$。你的任务是计算,通过上述操作可以生成多少个长度恰好为 $L$ 的不同子串。这里所说的「子串」指的是连续且长度为 $L$ 的片段。
输入格式
输入的第一行包含两个整数 $N$ 和 $L$,用空格分隔。$N$($1 \le N \le 100$)表示单词集合中的单词数量(包括初始给定的单词)。接下来的 $N$ 行,每行是一个单词。这些行中只有小写拉丁字母和行尾换行符。每个单词的长度至少是 $L$,最大不超过 128。你将从这个集合中的第一个单词开始操作。
输出格式
输出只有一行,一个整数:能够通过上述操作产生的、长度为 $L$ 的不同子串的数量。
**本翻译由 AI 自动生成**