#include<iostream>
#include<queue>
#include<string>
#include<cstring>
using namespace std;
#define M 30
int graph[M][M];
int flag[M];
queue <int> myqueue;
void input(int &len)
{
string str;
while(1)
{
getline(cin,str);
if(str.length()==0||cin.eof())
{
break;
}
if(str.length()==1)
{
len = str[0]-'A';
for(int i=0; i<=len; i++)
{
graph[i][i] = 1;
}
}
if(str.length()==2)
{
graph[str[0]-'A'][str[1]-'A'] = 1;
graph[str[1]-'A'][str[0]-'A'] = 1;
}
}
}
void bfs(int len)
{
int node,i;
while(!myqueue.empty())
{
node = myqueue.front();
for(i=0; i<=len; i++)
{
if(graph[node][i]==1)
{
if(flag[i]==0)
{
myqueue.push(i);
flag[i] = 1;
}
graph[node][i] = 0;
graph[i][node] = 0;
}
}
myqueue.pop();
}
}
void solve(int len,int &ans)
{
int i,j;
for(i=0; i<=len; i++)
{
for(j=0; j<=len; j++)
{
if(graph[i][j]==1)
{
if(flag[i]==0)
{
myqueue.push(i);
flag[i] = 1;
}
if(flag[j]==0)
{
myqueue.push(j);
flag[j] = 1;
}
graph[i][j] = 0;
graph[j][i] = 0;
bfs(len);
ans++;
}
}
}
}
void output(int ans)
{
cout<<ans<<endl;
}
int main()
{
int num;
int len;
int ans;
char ch;
string str;
cin>>num;
ch = cin.get();
getline(cin,str);
while(num--)
{
ans = 0;
memset(flag,0,sizeof(flag));
memset(graph,0,sizeof(graph));
input(len);
solve(len,ans);
output(ans);
if(num)
cout<<endl;
if(cin.eof())
break;
}
return 0;
}