2835: T7-有趣的生物课

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:7 解决:3

题目描述

语文老师一回头,鲁讯甘为孺子牛;
数学老师一回头,六元六次都能求;
英语老师一回头,sorry加上thank you;
化学老师一回头,二氧化碳变汽油;
物理老师一回头,一根杠杆撬地球;
生物老师一回头,试管婴儿水里游;
地理老师一回头,百幕大川也能游;
历史老师一回头,穿越时空话春秋;
政治老师一回头,元首领导确实牛;


YZT在今天的生物课上,不仅体会了什么叫“试管婴儿水里游”,并且新学到了血型问题,自己编了对应的顺口溜。

血型有四种,A、B、O和AB,
红细胞上头,抗原来定夺;
A有A抗原,B是B抗原显,
O啥都不挂,AB全占先。

不同的血型之间有着特定的兼容性,这决定了谁可以向谁献血。具体规则如下:

- 血型 A 的同学可以向血型 A 和 AB 的同学献血。
- 血型 B 的同学可以向血型 B 和 AB 的同学献血。
- 血型 AB 的同学只能向血型 AB 的同学献血。
- 血型 O 的同学是最无私的,他们可以向任何血型(A、B、AB 和 O)的同学献血。

现在,生物老师给出了班级里 n 名同学的血型信息,她想知道,在这些同学中,最多能有多少人形成一个献血链条,即一个人可以向另一个人献血,而这个人又可以继续向下一个人献血,以此类推。

你的任务是,根据给定的血型信息,计算出可以形成献血链条的最大人数。

输入

第一行:一个整数 \( T \),表示数据组数。
对于每组数据:
   - 第一行:一个整数 \( n \),表示人数(即志愿者的数量)。
   - 第二行:\( n \) 个用空格隔开的字符串 \( b_1 \sim b_n \),表示每名志愿者的血型(A、B、AB、O)。

输出

对于每组数据,输出一行一个整数表示答案。

样例输入 复制

4
3
A B A
2
A B
4
A B O B
5
AB A A AB A

样例输出 复制

2
1
3
5

提示

## 数据规模与约定

对于30%的数据: \(1 \leq n\), \(\sum n \leq 10\)

对于60%的数据: \(1 \leq n\), \(\sum n \leq 1000\)

对于100%的数据, \(1 \leq T \leq 1000\),\(1 \leq n \leq 10^5\), \(1 \leq \sum n \leq 2 \times 10^5\), \(b_i \in \{A, B, AB, O\}\)

来源/分类