P3856 [TJOI2008] 公共子串

题目描述

一个字符串的子串是在这个串基础上去掉 $0$ 个或者若干个字符所形成的,例如 $\texttt{abc}$,$\texttt{aa}$ 和 $\texttt{abbc}$ 都是字符串 $\texttt{aabbcc}$ 的子串,而 $\texttt{aba}$ 不是。 现给你三个字符串,请问他们三个共同含有多少种子串(不算空串)? 注意: 有些相同的公共子串尽管出现在不同的位置,但仍算 $1$ 种,详见样例。

输入格式

每组测试数据只有 $3$ 行,每行都是一个只包含有小写字母的字符串。

输出格式

输出 $3$ 个字符串共有的公共子串种类数。

说明/提示

$3$ 个字符串共有的公共子串有:$\texttt{a}$,$\texttt{p}$,$\texttt{ap}$,$\texttt{pa}$,$\texttt{aa}$,$\texttt{apa}$。 其中子串 $\texttt{a}$ 有多个,但由于统计的是公共子串种类,所以 $\texttt{a}$ 只算 $1$ 种子串。 对于 $100\%$ 的数据,字符串的长度不超过 $100$。字符串中只含有小写字母。