小 R 是一次编程集训营的组队负责人。本次集训营共招募了 N 名学员,每位学员拥有一个唯一的报名编码(由大写英文字母组成的非空字符串)。报名编码的首字母决定该学员所属的培训组别。
根据本次集训营的招募规则,只有报名编码首字母属于 {\texttt{M},\ \texttt{A},\ \texttt{R},\ \texttt{C},\ \texttt{H}} 的学员才是正式学员,首字母为其他字母的报名信息视为无效,不参与后续操作。
小 R 需要从所有正式学员中选出 3 名,组成一支参赛小队,要求 3 人分别来自不同的培训组别(即 3 人的报名编码首字母互不相同)。请帮小 R 计算满足条件的选法总数(不计顺序)。
输入共 N + 1 行。
第一行包含一个正整数 N,表示学员总数。
接下来 N 行,第 i 行(1 \leq i \leq N)包含一个字符串 S_i,表示第 i 名学员的报名编码。
输出一行,包含一个非负整数,表示满足条件的选法总数。
5 MECHANICAL ALUMINUM REACTOR COATING HYDRAULIC
10
5 MOTORBASE MOUNTING AXLEROD ROTORSHAFT BRACKET
2
12 MELON MERCURY MIRROR ARROW ANCHOR RHYTHM RADAR CABLE COPPER CROWN BINARY DELTA
60
五名学员的报名编码首字母依次为 \texttt{M}、\texttt{A}、\texttt{R}、\texttt{C}、\texttt{H},均为正式学员,分属 5 个不同组别,每组各 1 人。
可以把“选 3 个不同组别”理解为:从这 5 个组别里,挑出任意 3 组来组队。
例如:{\texttt{M},\texttt{A},\texttt{R}}、{\texttt{M},\texttt{A},\texttt{C}}、{\texttt{M},\texttt{A},\texttt{H}}、{\texttt{M},\texttt{R},\texttt{C}}、{\texttt{M},\texttt{R},\texttt{H}}、{\texttt{M},\texttt{C},\texttt{H}}、{\texttt{A},\texttt{R},\texttt{C}}、{\texttt{A},\texttt{R},\texttt{H}}、{\texttt{A},\texttt{C},\texttt{H}}、{\texttt{R},\texttt{C},\texttt{H}},一共 10 组。
又因为每个组别都只有 1 人,所以每一组都只有 1 种选法。总数就是 10 \times 1 = 10。
五名学员的报名编码首字母依次为 \texttt{M}、\texttt{M}、\texttt{A}、\texttt{R}、\texttt{B}。
其中 \texttt{BRACKET} 首字母为 \texttt{B},不属于有效组别,视为无效报名,共 4 名正式学员。
各组别人数:\texttt{M} 组 2 人,\texttt{A} 组 1 人,\texttt{R} 组 1 人,\texttt{C}、\texttt{H} 组各 0 人。
要选出来自 3 个不同组别的队员,所选的这 3 个组别里每组都必须至少有 1 人。
这里 \texttt{C}、\texttt{H} 组人数为 0,所以只要选到它们就不可能组队成功。因此真正可行的组别只能是 {\texttt{M},\texttt{A},\texttt{R}}。
在这三个组里选人:\texttt{M} 组有 2 种选法,\texttt{A} 组有 1 种,\texttt{R} 组有 1 种,所以总数为 2 \times 1 \times 1 = 2。
对于 10\% 的数据,满足 1 \le N \lt 5。
对于另外 10\% 的数据,满足 N=5。
对于所有测试数据,保证:1 \leq N \leq 10^5,S_i 由大写英文字母组成,1 \leq |S_i| \leq 10,对所有 1 \leq i < j \leq N,均有 S_i \neq S_j(报名编码互不相同)。
答案可能超出 32 位整数的表示范围,但保证不超过 64 位整数的表示范围,请注意选用合适的数据类型。