编程友谊赛
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

SIT 算法竞赛社要举办一场编程友谊赛,有 n 支队伍报名,每支队伍有一个名字,用字符串si表示。

社长发现,有些队伍的名字可以通过重新排列字母变成另一个队伍的名字(即互为字母异位词)。 这样的队伍之间可以进行一场“名字匹配赛”。

为了统计所有可能的比赛安排,社长定义: 如果队伍 i 和队伍 j 的名字互为字母异位词,则称 (i,j)为一组“可匹配对”。

请你帮助社长计算,总共有多少组“可匹配对”。 任务

给定 n 个字符串,计算所有满足i<jsisj互为字母异位词的对数。

字母异位词定义:两个字符串的字符出现次数完全相同,只是顺序不同。

输入描述:

第一行:整数 n(1 \leq n \leq 10^4

接下来 n 行:每行一个字符串 si(仅由小写英文字母组成,长度不超过 50

输出描述:

一个整数,表示可匹配对的数量。
示例1

输入

复制
4
a
a
b
b

输出

复制
2