luogu#P9613. [CERC2019] K==S

    ID: 13582 远端评测题 1000ms 128MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>动态规划,dp2019矩阵乘法AC 自动机ICPC

[CERC2019] K==S

题目背景

题目译自 CERC 2019K==S

题目描述

渐进式硬八度摇滚曲调(所谓的“phorts”)是使用特定的音符创作的。这种摇滚风格只建立在 1313 个不同的音符音高上,其他音高(在其他八度中)被认为是过时的音乐基石。每个音符可以是长的,也可以是短的。因此,摇滚中正好有 2626 个不同的音符。

你将在你朋友的生日之际创作一首 phort 曲调,并与你的乐队在主要的城市广场上表演。在创作词缀时,你需要避免使用某些音乐短语,这些短语由于大型唱片公司赞助的长期研究而受到版权保护。已经证实,这些短语非常朗朗上口,易于记忆,可以用来将听众下意识地与某个特定的音乐公司联系起来,该公司会在他们的制作中使用这些短语。

曲调是一连串的音符。一个音乐短语也是一个音符序列,如果它的音符形成曲调的连续子序列,则它被认为包含在曲调中,这意味着相同的音符以相同的顺序出现在曲调中。

幸运的是,到目前为止,只有少数禁用短语获得了专利。因此,你可以相对自由地创作自己的曲调。特别是,您对某些长度的可接受的曲调的数量感兴趣。可接受的曲调是指任何不包含禁用短语的曲调。曲调的长度等于它所包含的音符数。

输入格式

第一行包含两个整数 N,Q (1N109,1Q100)N, Q\ (1\le N\le 10^9, 1\le Q\le 100)NN 是曲调的长度,QQ 是禁用音乐短语的数量。

接下来 QQ 行,每行都描述了一个禁用短语。禁用短语的描述以一个表示其长度的正整数 LL 开头,后跟一个由 LL 个小写英文字母组成的字符串。每个字母代表一个摇滚音符,不同的字母代表不同的音符。

所有禁用短语的长度总和不超过 100100

输出格式

输出长度为 NN 的不同可接受曲调的数量对 10000000071\,000\,000\,007 取模的值。

2 3
1 a
1 b
1 c

529

3 3
2 aa
1 a
1 a

15625

3 1
2 ab

17524