CF1287B Hyperset

题目描述

蜜蜂 Alice 和 Alesya 送给养蜂人 Polina 著名的卡牌游戏“Set”作为圣诞礼物。这副牌由若干张卡片组成,每张卡片在四种特征上各有三种取值:形状数量、形状、填充方式和颜色。在这个游戏中,某些三张卡片的组合被称为一个“set”。对于每一种特征——颜色、数量、形状和填充方式——三张卡片要么该特征完全相同,要么两两不同。下图展示了“set”的样子。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1287B/2d643729d5939800827cb912354d70a177513bf3.png) Polina 想出了一个新游戏,叫做“Hyperset”。在她的游戏中,有 $n$ 张卡片,每张卡片有 $k$ 个特征,每个特征有三种可能的取值:“S”、“E” 或 “T”。原版的“Set”游戏可以看作是 $k=4$ 的“Hyperset”。 与原游戏类似,三张卡片能组成一个 set,当且仅当对于每一个特征,这三张卡片的该特征要么全部相同,要么两两不同。游戏的目标是计算有多少种方式可以选出三张卡片组成一个 set。 可惜寒假结束了,Polina 要去上学了。请你帮 Polina 统计桌面上卡片中能组成 set 的三张卡片组合数。

输入格式

每组测试的第一行包含两个整数 $n$ 和 $k$($1 \le n \le 1500$,$1 \le k \le 30$),表示卡片数量和特征数量。 接下来的 $n$ 行,每行描述一张卡片:一个长度为 $k$ 的字符串,仅包含字母 “S”、“E”、“T”。第 $i$ 个字符表示该卡片的第 $i$ 个特征。所有卡片均不相同。

输出格式

输出一个整数,表示可以选出多少组三张卡片组成 set。

说明/提示

在第三个样例测试中,以下两组三张卡片是 set: 1. "SETT", "TEST", "EEET" 2. "TEST", "ESTE", "STES" 由 ChatGPT 4.1 翻译