【模板】广义后缀自动机(广义 SAM)

题目背景

管理员备注:本题于 2023 年 5 月 4 日加入输出点数的要求。本题在此之前提交的题解均没有输出点数,特此注明。

题目描述

给定 $n$ 个由小写字母组成的字符串 $s_1,s_2\ldots s_n$,求本质不同的子串个数。(不包含空串) 进一步,设 $Q$ 为能接受 $s_1,s_2,\dots,s_n$ 的所有后缀的最小 DFA,请你输出 $Q$ 的点数。(如果你无法理解这句话,可以认为就是输出 $s_1,s_2,\dots,s_n$ 建成的“广义后缀自动机”的点数)。

输入输出格式

输入格式


第一行一个正整数 $n$。 以下 $n$ 行,每行一个字符串,第 $i$ 行表示字符串 $s_{i-1}$。

输出格式


第一行一个正整数,为本质不同的子串个数。 第二行一个正整数,为 $Q$ 的点数。

输入输出样例

输入样例 #1

4
aa
ab
bac
caa

输出样例 #1

10
10

输入样例 #2

1
a

输出样例 #2

1
2

说明

数据范围:$1\le n\le 4\cdot 10^5$,$1\le \sum{|s_i|}\le 10^6$。 样例 1 解释:共有 $10$ 个本质不同的子串,它们是:`"a","b","c","aa","ab","ac","ba","ca","bac","caa"`。 DFA 结构略去。 样例 2 解释:共有 $1$ 个本质不同的子串,它们是:`"a"`。DFA 包含一个起始结点 $S$ 和一个结点 $T$,有一条边 $S\to T$,其上字符为 `a`。故总结点数为 2。