#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll fun1(string a,string b){
int a1=a.length()-1;
int b1=b.length()-1;
ll ans=0;
while(a1>=0 && b1>=0 && a[a1]==b[b1]){a1--; b1--; ans++;}
return ans;
}
ll fun2(string a,string b){
int a1=0;
int b1=0;
ll ans=0;
while(a1<a.length() && b1<b.length()&& a[a1]==b[b1]){ans++; a1++; b1++;}
return ans;
}
ll fun(string a,string b){
ll temp=min(fun1(a,b),fun2(a,b));
return (temp*temp);
}
int main(){
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
string a[n];
for(int i=0;i<n;i++)cin>>a[i];
if(n==1){cout<<"0"<<endl; continue;}
else if(n==2){cout<<fun(a[0],a[1])<<endl; continue;}
sort(a,a+n);
map<ll,ll> map1;
for(int i=1;i<n;i++){
ll temp=fun(a[i-1],a[i]);
map1[i]=temp;
}
string look[n];
look[0]=a[0];
ll cost[n];
cost[0]=0;
cost[1]=map1[1];
look[1]="";
for(int i=2;i<n;i++){
string tt=look[i-1];
if(tt==""){
ll t1=cost[i-2]+map1[i];
if(t1>cost[i-1]){
cost[i]=t1;
look[i]=look[i-2];
}
else{
cost[i]=cost[i-1];
look[i]=a[i];
}
}
else{
if(tt==a[i-1]){
cost[i]=cost[i-1]+map1[i];
}
else{
ll t1=cost[i-1]+fun(a[i],tt);
ll t2=cost[i-2]+map1[i];
cost[i]=max(t1,t2);
}
look[i]="";
}
}
cout<<cost[n-1]<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdHlwZWRlZiBsb25nIGxvbmcgbGw7CmxsIGZ1bjEoc3RyaW5nIGEsc3RyaW5nIGIpewppbnQgYTE9YS5sZW5ndGgoKS0xOwppbnQgYjE9Yi5sZW5ndGgoKS0xOwpsbCBhbnM9MDsKd2hpbGUoYTE+PTAgJiYgYjE+PTAgJiYgYVthMV09PWJbYjFdKXthMS0tOyBiMS0tOyBhbnMrKzt9CnJldHVybiBhbnM7Cn0KbGwgZnVuMihzdHJpbmcgYSxzdHJpbmcgYil7CmludCBhMT0wOwppbnQgYjE9MDsKbGwgYW5zPTA7CndoaWxlKGExPGEubGVuZ3RoKCkgJiYgYjE8Yi5sZW5ndGgoKSYmIGFbYTFdPT1iW2IxXSl7YW5zKys7IGExKys7IGIxKys7fQpyZXR1cm4gYW5zOwp9CmxsIGZ1bihzdHJpbmcgYSxzdHJpbmcgYil7CmxsIHRlbXA9bWluKGZ1bjEoYSxiKSxmdW4yKGEsYikpOwpyZXR1cm4gKHRlbXAqdGVtcCk7Cn0KCmludCBtYWluKCl7CmludCB0OwpzY2FuZigiJWQiLCZ0KTsKd2hpbGUodC0tKXsKICAgIGludCBuOwogICAgc2NhbmYoIiVkIiwmbik7CiAgICBzdHJpbmcgYVtuXTsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspY2luPj5hW2ldOwogICAgaWYobj09MSl7Y291dDw8IjAiPDxlbmRsOyBjb250aW51ZTt9CiAgICBlbHNlIGlmKG49PTIpe2NvdXQ8PGZ1bihhWzBdLGFbMV0pPDxlbmRsOyBjb250aW51ZTt9CgoKICAgIHNvcnQoYSxhK24pOwogICAgbWFwPGxsLGxsPiBtYXAxOwogICAgIGZvcihpbnQgaT0xO2k8bjtpKyspewogICAgICAgIGxsIHRlbXA9ZnVuKGFbaS0xXSxhW2ldKTsKICAgICAgbWFwMVtpXT10ZW1wOwogICAgfQogICAgc3RyaW5nIGxvb2tbbl07CiAgICBsb29rWzBdPWFbMF07CiAgICBsbCBjb3N0W25dOwogICAgY29zdFswXT0wOwogICAgY29zdFsxXT1tYXAxWzFdOwogICAgbG9va1sxXT0iIjsKICAgIGZvcihpbnQgaT0yO2k8bjtpKyspewogICAgc3RyaW5nIHR0PWxvb2tbaS0xXTsKICAgIGlmKHR0PT0iIil7CgogICAgICAgIGxsIHQxPWNvc3RbaS0yXSttYXAxW2ldOwogICAgICAgIGlmKHQxPmNvc3RbaS0xXSl7CiAgICAgICAgICAgIGNvc3RbaV09dDE7CiAgICAgICAgICAgIGxvb2tbaV09bG9va1tpLTJdOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICBjb3N0W2ldPWNvc3RbaS0xXTsKICAgICAgICAgIGxvb2tbaV09YVtpXTsKICAgICAgICB9CgogICAgfQogICBlbHNlewogICAgICBpZih0dD09YVtpLTFdKXsKICAgICAgICBjb3N0W2ldPWNvc3RbaS0xXSttYXAxW2ldOwogICAgICB9CiAgICAgIGVsc2V7CiAgICAgICAgbGwgdDE9Y29zdFtpLTFdK2Z1bihhW2ldLHR0KTsKICAgICAgICBsbCB0Mj1jb3N0W2ktMl0rbWFwMVtpXTsKICAgICAgICAgY29zdFtpXT1tYXgodDEsdDIpOwoKICAgICAgfQogICAgIGxvb2tbaV09IiI7CiAgIH0KCiAgICB9CgogIGNvdXQ8PGNvc3Rbbi0xXTw8ZW5kbDsKCgp9CgoKcmV0dXJuIDA7Cn0=