Mirko 已经解出了日报上所有的填字游戏,而且他太害怕 ACTA 了,不敢从互联网上下载新的游戏。现在他让 Frane 用一道编程题来挑战他。Frane 兴奋地带着一个全新的任务回应了他,并且非常友好地没有对这个任务进行版权保护,所以你也可以尝试解决它!
四个长度相同的单词可以组合成一个正方形,其中两个单词表示水平边,另外两个表示垂直边。水平单词从左到右阅读,垂直单词从上到下阅读。角上的字母由相邻的两条边共享。下图展示了由单词 “HLAD”、“NIVA”、“HSIN”、“DEDA” 组成的一个可能正方形。
你的任务是,给定一个长度相同的单词列表,计算可以从这些单词的子集中组合出多少个不同的正方形。在同一个正方形中,你不允许重复使用同一个单词。如果两个正方形在至少一个位置上的字符不同,则认为它们是不同的。
输入格式
第一行包含一个正整数 $N$($4 \le N \le 100\,000$),表示列表中的单词数量。
接下来的 $N$ 行,每行包含一个仅由大写英文字母组成的单词。
每个单词最多包含 10 个字符。所有单词均不相同且长度相等。
输出格式
输出的第一行也是唯一的一行,应当包含所需的不同正方形数量。
注意:测试数据将确保答案在 64 位整型范围内(Pascal 中的 int64,C/C++ 中的 long long)。
样例
输入样例 1
4 NIVA HLAD HSIN DEDA
输出样例 1
2
输入样例 2
6 BAKA BARA BALC CALC ARHC BLIC
输出样例 2
8