#CF1393E2. 暮光闪闪与古代卷轴(加强版)

暮光闪闪与古代卷轴(加强版)

暮光闪闪与古代卷轴(加强版)

  • 时间限制:5 秒
  • 内存限制:512 MiB

题目描述

一份古代卷轴包含 nn 个单词。长老可能对其中某些单词施加魔法:在单词的任意位置恰好插入一个字母。原卷轴中的单词按字典序非递减排列。

现在需要从每个单词中选择“不删除”或“删除恰好一个位置的字母”,使得到的单词序列按字典序非递减。不同的删除位置视为不同恢复方案;即使删除相同连续字母得到的字符串相同,这些方案仍分别计数。

求恢复方案数,对 109+710^9+7 取模。如果不存在方案,输出 00。

字符串 aa 的字典序小于字符串 bb,当且仅当:aa 是 bb 的真前缀;或二者第一个不同位置上 aa 的字母更小。

输入格式

第一行一个整数 nn。

接下来 nn 行,每行一个只含小写英文字母的非空字符串,表示当前卷轴中的一个单词。

输出格式

输出恢复方案数对 109+710^9+7 取模的结果。

样例输入 1

3
abcd
zaza
ataka

样例输出 1

4

样例输入 2

4
dfs
bfs
sms
mms

样例输出 2

8

样例输入 3

3
abc
bcd
a

样例输出 3

0

样例输入 4

6
lapochka
kartyshka
bigbabytape
morgenshtern
ssshhhiiittt
queen

样例输出 4

2028

数据范围

对于全部数据,1≤n≤1051\le n\le10^5,每个单词长度至少为 11,所有单词长度之和不超过 10610^6。

子任务编号 分值 特殊限制
1 20 n 不超过 8,且每个单词长度不超过 5
2 n 不超过 300,且每个单词长度不超过 30,总长度不超过 3000
3 所有单词长度均为 1
4 40 无特殊限制

每个测试点独立计分。