#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
//英语 看博友分析 抄博友程序 dfs 背
string da[20];
int chang[20][20];
int used[20];
int ans;
int n;
void fun(int ti,int tj)
{
string a=da[ti];
string b=da[tj];
int jg=0;
for(int l=1;l<=a.length()&& l<=b.length();l++)
{
int flag=0;
for(int i=0,j=b.length()-l;i<l;i++,j++)//背
{
if(b[i]!=a[j])//a+b
{
flag=1;
break;
}
}
if(flag==0)
{
jg=max(jg,l);
}
}
chang[ti][tj]=b.length()-jg;//背
}
void dfs(int pre,int js,int sum)
{
if(sum>ans)
{
return ;
}
if(js==(n-1))
{
if(ans>sum)//抄博友程序
{
ans=sum;
}
return;//抄博友程序
}
for(int i=0;i<n;i++)
{
if(used[i]==0)
{
used[i]=1;
dfs(i,js+1,sum+chang[pre][i]);
used[i]=0;
}
}
}
int main()
{
int T;
cin>>T;
for(int o=0;o<T;o++)
{
cin>>n;
ans=10000;
for(int i=0;i<n;i++)
{
cin>>da[i];
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
fun(i,j);
}
}
/*
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cout<<chang[i][j]<<" ";
}
cout<<endl;
}*/
for(int i=0;i<n;i++)
{
memset(used,0,sizeof(used));
used[i]=1;
dfs(i,0,da[i].size());//背
used[i]=0;
}
cout<<ans<<endl;
}
}