C. 单词接龙(word)

内存限制:256 MiB 时间限制:1000 ms 输入文件: word.in 输出文件: word.out
题目类型:传统 评测方式:文本比较

题目描述

给出一张单词表,单词表中的单词长度 𝑘 都相同。从单词表中挑选出 4 个单词,将他们首尾连接后构成一个圈。

如 单词表中 单词的长度 𝑘 = 4, 从单词表中挑选出“ ABCD ” 、 “ DEFG ” 、“HIJG”、“AMNH” 四个单词,将他们首尾依次连接后构成一个圈。相同字母可以 连接,连接以后算 1 个字母。如下图所示是两个可行的方案,首尾连接方向务必请关注其中的箭头,读单词的方向按照箭头方向。

请编程统计按照这样的规则,可以构成多少个不同的圈?不同的圈指的是两个圈至少有一处字母不相同(考虑箭头方向)。同一个方案中不允许重复使用一个单词。

输入格式

从文件 word.in 中读入数据。

输入共 𝑁 + 1行,第 1 行一个正整数 𝑁。

接下来 𝑁 行,每行一个单词,同一个测试点中单词的长度 𝑘 都相同。保证每个单词是不同的(对任意两个单词,至少有一处字母不相同)

数据保证 4 ≤ 𝑁 ≤ 10^5,2 ≤ 𝑘 ≤ 10,每个单词仅由大写字母构成。

输出格式

输出到文件 word.out 中。

输出一行一个整数,表示不同的圈数。

注意:答案可能很大,建议用 long long 类型。

样例

【样例 1 输入】

4
ABCD
DEFG
HIJG
AMNH

【样例 1 输出】

2

【样例 2 输入】

6
ABMB
ABRB
ABLD
DBLD
BRHD
ALFD

【样例 2 输出】

8

数据范围与提示

对于所有测试数据,4 ≤ 𝑁 ≤ 10^5,2 ≤ 𝑘 ≤ 10,每个单词仅由大写字母构成。

测试点 1,2,3,4: n ≤ 1000

测试点 5,6,7,8,9,10: n ≤ 10^5