#include<cstdio> #include<cstring> #include<iostream> #include<cmath> using namespace std; const int maxn = 505; struct student{ int height; char gender; char m[105]; char s[105]; }stu[maxn]; bool G[maxn][maxn]; int n,ans; int link[maxn]; int vis[maxn]; void init(){ memset(link,-1,sizeof(link)); memset(G,0,sizeof(G)); } bool dfs(int u){ for(int v=1;v<=n;v++){ if(G[u][v] && !vis[v]){ vis[v] = true; //cout<<u<<v<<link[v]<<endl; if(link[v] == -1 || dfs(link[v])){ link[v] = u; //cout<<u<<endl; return true; } } } return false; } void KM(){ ans = 0; for(int i=1;i<=n;i++){ memset(vis,0,sizeof(vis)); if(dfs(i)) ans++; } } int main() { //if(freopen("input.txt","r",stdin)== NULL) printf("Error\n"); int T; cin>>T; while(T--){ cin>>n; init(); for(int i=1;i<=n;i++){ cin>>stu[i].height; cin>>stu[i].gender; cin>>stu[i].m; cin>>stu[i].s; } for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++){ int a = stu[i].height - stu[j].height; int b = stu[i].gender - stu[j].gender; int c = strcmp(stu[i].m,stu[j].m); int d = strcmp(stu[i].s,stu[j].s); if( fabs(a)<=40 && b && !c && d){ if(stu[i].gender == 'M') G[i][j] = true; else G[j][i] = true; } } KM(); cout<<n-ans<<endl; } }