#include using namespace std; typedef long long ll; typedef unsigned long long ull; #define Rep(i,a,b) for(register int i=(a);i<=(b);++i) #define rep(i,a,b) for(register int i=(a);i<(b);++i) #define Dep(i,a,b) for(register int i=(a);i>=(b);--i) #define mem(x,v) memset(x,v,sizeof(x)) #define gc getchar #define pc putchar inline ll read(){ ll x = 0,f = 0;char c = gc(); for(;!isdigit(c);c=gc()) f|=(c=='-'); for(;isdigit(c);c=gc()) x = x * 10 + (c - '0'); return f ? -x : x; } inline void write(ll x){if(x < 0) pc('-'),x=-x;if(x>=10) write(x / 10);pc(x%10+'0');} inline void writeln(ll x){write(x),pc('\n');} inline void wri(ll x){write(x),pc(' ');} const int maxn = 1e6+233; int f[10][1<<10],g[1<<10],n,cnt[233]; char s[2333]; void solve(){ n = read(); Rep(i,0,9) cnt[i] = 0; Rep(i,1,n){ scanf("%s",s); cnt[s[4]-'0']++; } memset(f,0x3f,sizeof(f)); rep(i,0,1<<10){ g[i] = 0; Rep(j,0,9) if(!(i>>j&1)) g[i] += cnt[j]; } f[0][0] = 0; Rep(len,0,5){ rep(i,0,1<<10){ for(int j=i;;j=(j-1)&i){ f[len+1][i] = min(f[len+1][i],max(f[len][j],g[i^j])); if(!j) break; } } } int ans = 0x3f3f3f3f; rep(i,0,1<<10) ans = min(ans,f[5][i]); writeln(ans); /*sum=0; Rep(i,0,9) sum+=cnt[i]; Rep(i,0,9) cnt[i]=sum-cnt[i]; sort(cnt+0,cnt+9+1); writeln(cnt[4]);*/ } int main(){ // freopen("1.in","r",stdin); int T = read(); while(T--) solve(); return 0; }