bzoj#P2366. 多重历史

多重历史

题目描述

宇宙具有多重历史,每一个历史都是由微小的硬果决定的。 ——霍金《果壳中的宇宙》

TIGER 实验室的 Dr.Minimum 对现代理论物理学中的多重历史理论特别感兴趣。有一次,他给擅长计算的研究员 Maximum 出了一个难题:“假设在过去的一段连续时间中,每一个时刻只有可能发生一个动作(当然也可能不发生)。一段连续时间里发生的某些特定的动作序列称作一个事件。现在我只告诉你,过去一段时间的可能动作列表,以及在那一段时间内发生的事件、事件的内容(也就是事件是有哪些动作连续构成)以及事件发生的先后顺序。要你求出有多少个可能的历史。”

我们把相同的动作用相同的小写字母表示,那么可能的动作列表和事件都可以表示为一个字符串。假设有两个动作,aabb,假设过去一段时间内,可能发生的动作列表为 aabbaabb,发生的事件为 aabbaabb 之前发生;那么一共就可能有 44 种不同的历史,分别为 aabb\textcolor{red}{a}a\textcolor{red}{b}baabb\textcolor{red}{a}ab\textcolor{red}{b}aabba\textcolor{red}{a}\textcolor{red}{b}baabba\textcolor{red}{a}b\textcolor{red}{b}(红色表示发生的动作)。但是,如果事件为 aabaababbabb,而且 aabaababbabb 先发生,那么对于上述的可能动作列表,就不存在满足要求的历史(因为事件是相对独立的,不能交错)。

如果你是 Maximum,如何解决这个问题呢?

输入格式

输入文件第一行为一个数 nn,表示事件的个数。

接下来 nn 行每行一个字符串,按时间顺序给出每个事件(所有事件字符串长度和不大于 10410^4并且不存在两个事件字符串 AABBAABB 的后缀)。

最后一行为一个字符串,表示过去一段时间里可能的动作列表(长度不大于 5×1055\times 10^5)。

输出格式

输出文件包含一个整数,表示可能的历史总数对 10610^6 取余的结果。

样例输入

2
a
b
aabb

样例输出

4

数据规模与约定

对于 100%100\% 的数据,1n1041\le n\le 10^4,事件字符串总长度不超过 10410^4,动作列表长度不超过 5×1055\times 10^5