#include "bits/stdc++.h"
#define MAXN 100009
#define INF 1000000007
#define mp(x,y) make_pair(x,y)
#define all(v) v.begin(),v.end()
#define pb(x) push_back(x)
#define wr cout<<"----------------"<<endl;
#define ppb() pop_back()
#define tr(ii,c) for(__typeof((c).begin()) ii=(c).begin();ii!=(c).end();ii++)
#define ff first
#define ss second
#define my_little_dodge 46
#define debug(x) cerr<< #x <<" = "<< x<<endl;
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;}
template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;}
int cnt[26];
char s[MAXN];
int main(){
// freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
int t;
scanf("%d",&t);
assert(1<=t and t<=100);
while(t--){
memset(cnt,0,sizeof cnt);
int n,sum=0;
scanf("%d",&n);
assert(1<=n and n<=100);
for(int i=0;i<n;i++){
scanf("%s",s);
int sz=strlen(s);
for(int j=0;j<sz;j++)
cnt[s[j]-'a']++;
sum+=sz;
assert(1<=sz);
}
assert(1<=sum && sum<=1000);
int ans=cnt['c'-'a']/2;
umin(ans,cnt['o'-'a']);
umin(ans,cnt['d'-'a']);
umin(ans,cnt['e'-'a']/2);
umin(ans,cnt['h'-'a']);
umin(ans,cnt['f'-'a']);
printf("%d\n",ans);
}
return 0;
}
I2luY2x1ZGUgImJpdHMvc3RkYysrLmgiCiNkZWZpbmUgTUFYTiAxMDAwMDkKI2RlZmluZSBJTkYgMTAwMDAwMDAwNwojZGVmaW5lIG1wKHgseSkgbWFrZV9wYWlyKHgseSkKI2RlZmluZSBhbGwodikgdi5iZWdpbigpLHYuZW5kKCkKI2RlZmluZSBwYih4KSBwdXNoX2JhY2soeCkKI2RlZmluZSB3ciBjb3V0PDwiLS0tLS0tLS0tLS0tLS0tLSI8PGVuZGw7CiNkZWZpbmUgcHBiKCkgcG9wX2JhY2soKQojZGVmaW5lIHRyKGlpLGMpIGZvcihfX3R5cGVvZigoYykuYmVnaW4oKSkgaWk9KGMpLmJlZ2luKCk7aWkhPShjKS5lbmQoKTtpaSsrKQojZGVmaW5lIGZmIGZpcnN0CiNkZWZpbmUgc3Mgc2Vjb25kCiNkZWZpbmUgbXlfbGl0dGxlX2RvZGdlIDQ2CiNkZWZpbmUgZGVidWcoeCkgIGNlcnI8PCAjeCA8PCIgPSAiPDwgeDw8ZW5kbDsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8aW50LGludD4gUElJOwp0ZW1wbGF0ZTxjbGFzcyBUPmJvb2wgdW1pbihUJiBhLFQgYil7aWYoYT5iKXthPWI7cmV0dXJuIDE7fXJldHVybiAwO30KdGVtcGxhdGU8Y2xhc3MgVD5ib29sIHVtYXgoVCYgYSxUIGIpe2lmKGE8Yil7YT1iO3JldHVybiAxO31yZXR1cm4gMDt9CmludCBjbnRbMjZdOwpjaGFyIHNbTUFYTl07CmludCBtYWluKCl7CiAgLy8gIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwogICAgLy9mcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwogICAgaW50IHQ7CiAgICBzY2FuZigiJWQiLCZ0KTsKICAgIGFzc2VydCgxPD10IGFuZCB0PD0xMDApOwogICAgd2hpbGUodC0tKXsKICAgIAltZW1zZXQoY250LDAsc2l6ZW9mIGNudCk7CgkJaW50IG4sc3VtPTA7CgkJc2NhbmYoIiVkIiwmbik7CiAgIAkJYXNzZXJ0KDE8PW4gYW5kIG48PTEwMCk7CiAgIAkJZm9yKGludCBpPTA7aTxuO2krKyl7CiAgIAkJCXNjYW5mKCIlcyIscyk7CgkJCWludCBzej1zdHJsZW4ocyk7CgkJCWZvcihpbnQgaj0wO2o8c3o7aisrKQoJCQkJY250W3Nbal0tJ2EnXSsrOwoJCQlzdW0rPXN6OwkKCQkJYXNzZXJ0KDE8PXN6KTsKICAgCQl9CiAgIAkJYXNzZXJ0KDE8PXN1bSAmJiBzdW08PTEwMDApOwogICAJCWludCBhbnM9Y250WydjJy0nYSddLzI7CiAgIAkJdW1pbihhbnMsY250WydvJy0nYSddKTsKICAgCQl1bWluKGFucyxjbnRbJ2QnLSdhJ10pOwogICAJCXVtaW4oYW5zLGNudFsnZSctJ2EnXS8yKTsKICAgCQl1bWluKGFucyxjbnRbJ2gnLSdhJ10pOwogICAJCXVtaW4oYW5zLGNudFsnZictJ2EnXSk7CiAgIAkJcHJpbnRmKCIlZFxuIixhbnMpOwogICAgfQoJcmV0dXJuIDA7Cn0=