在流行的纸牌游戏 SET 中,玩家的目标是识别出一组具有某些特殊属性的纸牌三元组,称为“集合”(set)。每张牌上显示一些图形,这些图形在数量、形状、透明度和颜色上各不相同。
Marin 和 Josip 最近买了一副这样的牌,现在他们玩得停不下来。他们变得非常擅长识别集合,以至于觉得纸牌仅由四个属性决定变得有些无聊。因此,他们决定玩一个该游戏的推广版本。
他们手头有一副包含 $n$ 张不同纸牌的牌组。每张牌由一个长度为 $k$ 的字符序列表示,每个字符均为 $1$、$2$ 或 $3$ 中的一个。牌组中牌的顺序无关紧要。
如果一个无序的三张牌组合满足以下条件,则称其为一个集合:对于 $k$ 个位置中的每一个,三张牌在该位置上的三个字符要么全部相同,要么两两不同。例如,由 $1123$、$1322$ 和 $1221$ 组成的三张牌构成一个集合,因为第一位和第三位上的字符全部相同(分别为 $1$ 和 $2$),而第二位和第四位上的字符两两不同(分别为 $1, 2, 3$ 的某种排列)。
看着桌上的这 $n$ 张牌,他们开始思考:这些 $n$ 张牌中有多少个无序三元组构成一个集合。请编写一个程序来回答他们的问题。
输入格式
第一行包含整数 $n$ 和 $k$,分别表示牌组中牌的数量和单张牌的属性数量。
接下来的 $n$ 行,每行包含一个长度为 $k$ 的字符序列,表示一张牌。每个字符均为 $1$、$2$ 或 $3$。不同的行包含不同的字符序列。
输出格式
仅输出一行,包含构成集合的无序三元组的数量。
子任务
在每个子任务中,均满足 $1 \le k \le 12$ 且 $1 \le n \le 3^k$。
| 子任务 | 分值 | 数据范围 |
|---|---|---|
| 1 | 10 | $1 \le k \le 5$ |
| 2 | 30 | $1 \le k \le 7$ |
| 3 | 70 | $1 \le k \le 12$ |
样例
输入格式 1
3 4 1123 1322 1221
输出格式 1
1
输入格式 2
2 2 11 22
输出格式 2
0
输入格式 3
5 3 111 222 333 123 132
输出格式 3
2
说明
第三个样例的解释: 两个集合分别是 $111, 222, 333$ 以及 $111, 123, 132$。