题目描述
给定 n 个由小写英文字母构成的字符串 S1,S2,⋯,Sn,称三个字符串 Sa,Sb 和 Sc 构成了一个三角形,若它们满足以下所有限制:
- Sa+Sb>Sc 或 Sb+Sa>Sc。
- Sa+Sc>Sb 或 Sc+Sa>Sb。
- Sb+Sc>Sa 或 Sc+Sb>Sa。
这里的 + 表示字符串连接操作。字符串通过字典序比较大小。例如,ba,cb 和 cbaa 构成了一个三角形,因为:
- cb + ba = cbba > cbaa.
- cbaa + ba = cbaaba > cb.
- cb + cbaa = cbcbaa > ba.
计算整数三元组 (a,b,c) 的数量,满足 1≤a<b<c≤n 且 Sa,Sb,Sc 构成了一个三角形。
输入格式
有多组测试数据。第一行输入一个整数 T 表示测试数据组数。对于每组测试数据:
第一行输入一个整数 n(1≤n≤3×105)表示字符串的数量。
对于接下来的 n 行,第 i 行输入一个由小写字母构成的字符串 Si(1≤∣Si∣≤3×105)。
保证单组数据所有字符串的总长度不超过 3×105,所有数据所有字符串的总长度不超过 106。
输出格式
每组数据输出一行一个整数,表示合法的三元组数量。
3
6
cbaa
cb
cb
cbaa
ba
ba
3
sdcpc
sd
cpc
1
ccpc
16
0
0