#include <stdio.h>
#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <utility>
#include <algorithm>
#include <string>
using namespace std;
#define ll long long
vector<string> list_string[25];
vector<ll> hash_list[25][2];
bool skip[20000];
int main() {
// std::ios::sync_with_stdio(false);
int tc;
cin >> tc;
for(int kasus = 1; kasus<=tc; kasus++) {
printf("Case #%d: ",kasus);
int n;
cin >> n;
for(int i=1; i<=20; i++) {
list_string[i].clear();
for(int j =0 ; j<2; j++) {
hash_list[i][j].clear();
}
}
int st =0 ;
for(int i = 0; i< n; i++) {
string temp;
cin >> temp;
int pjg = temp.length();
st = max(st,pjg);
list_string[pjg].push_back(temp);
ll hash =0, hash2 ;
for(int j =0 ; j < (int) temp.length()-1; j++) {
hash*= 31;
hash+= (temp[j]-'A'+1);
}
hash_list[pjg][0].push_back(hash);
hash2=hash*31;
hash2+=temp[pjg-1]-'A'+1;
hash_list[pjg][1].push_back(hash2);
//cout << temp << '=' << hash << ',' << hash2 << '\n';
}
int v =0;
map<ll, int> last;
for(int pjg = st; pjg > 0; pjg--) {
vector<string> &lx = list_string[pjg];
//cout << "PANJANG " << pjg << '\n';
for(int i =0 ; i < (int)lx.size(); i++) {
skip[i] = false;
ll hash_full = hash_list[pjg][1][i];
if(last[hash_full]>0) {
v++;
last[hash_full]--;
skip[i] = true;
} else {
//cout << "TIDAK ADA " << hash_full << '\n';
}
}
last.clear();
for(int i =0 ; i < (int)lx.size(); i++) {
if(skip[i]) {
continue;
}
ll hash_gk_full = hash_list[pjg][0][i];
last[hash_gk_full]++;
// cout << "MASUKKAN " << lx[i] << ' ' << hash_gk_full << '\n';
}
}
printf("%d\n",v);
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxzdHJpbmc+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBsbCBsb25nIGxvbmcKCnZlY3RvcjxzdHJpbmc+IGxpc3Rfc3RyaW5nWzI1XTsKdmVjdG9yPGxsPiBoYXNoX2xpc3RbMjVdWzJdOwoKYm9vbCBza2lwWzIwMDAwXTsKaW50IG1haW4oKSB7CgogICAgLy8gc3RkOjppb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBpbnQgdGM7CiAgICBjaW4gPj4gdGM7CiAgICBmb3IoaW50IGthc3VzID0gMTsga2FzdXM8PXRjOyBrYXN1cysrKSB7CgogICAgICAgIHByaW50ZigiQ2FzZSAjJWQ6ICIsa2FzdXMpOwoKICAgICAgICBpbnQgbjsKICAgICAgICBjaW4gPj4gbjsKICAgICAgICBmb3IoaW50IGk9MTsgaTw9MjA7IGkrKykgewogICAgICAgICAgICBsaXN0X3N0cmluZ1tpXS5jbGVhcigpOwogICAgICAgICAgICBmb3IoaW50IGogPTAgOyBqPDI7IGorKykgewogICAgICAgICAgICAgICAgaGFzaF9saXN0W2ldW2pdLmNsZWFyKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaW50IHN0ID0wIDsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpPCBuOyBpKyspIHsKICAgICAgICAgICAgc3RyaW5nIHRlbXA7CiAgICAgICAgICAgIGNpbiA+PiB0ZW1wOwogICAgICAgICAgICBpbnQgcGpnID0gdGVtcC5sZW5ndGgoKTsKICAgICAgICAgICAgc3QgPSBtYXgoc3QscGpnKTsKICAgICAgICAgICAgbGlzdF9zdHJpbmdbcGpnXS5wdXNoX2JhY2sodGVtcCk7CiAgICAgICAgICAgIGxsIGhhc2ggPTAsIGhhc2gyIDsKICAgICAgICAgICAgZm9yKGludCBqID0wIDsgaiA8IChpbnQpIHRlbXAubGVuZ3RoKCktMTsgaisrKSB7CiAgICAgICAgICAgICAgICBoYXNoKj0gMzE7CiAgICAgICAgICAgICAgICBoYXNoKz0gKHRlbXBbal0tJ0EnKzEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGhhc2hfbGlzdFtwamddWzBdLnB1c2hfYmFjayhoYXNoKTsKICAgICAgICAgICAgaGFzaDI9aGFzaCozMTsKICAgICAgICAgICAgaGFzaDIrPXRlbXBbcGpnLTFdLSdBJysxOwogICAgICAgICAgICBoYXNoX2xpc3RbcGpnXVsxXS5wdXNoX2JhY2soaGFzaDIpOwogICAgICAgICAgICAvL2NvdXQgPDwgdGVtcCA8PCAnPScgPDwgaGFzaCA8PCAnLCcgPDwgaGFzaDIgPDwgJ1xuJzsKICAgICAgICB9CiAgICAgICAgaW50IHYgPTA7CiAgICAgICAgbWFwPGxsLCBpbnQ+IGxhc3Q7CiAgICAgICAgZm9yKGludCBwamcgPSBzdDsgcGpnID4gMDsgcGpnLS0pIHsKICAgICAgICAgICAgdmVjdG9yPHN0cmluZz4gJmx4ID0gbGlzdF9zdHJpbmdbcGpnXTsKICAgICAgICAgICAgLy9jb3V0IDw8ICJQQU5KQU5HICIgPDwgcGpnIDw8ICdcbic7CiAgICAgICAgICAgIGZvcihpbnQgaSA9MCA7IGkgPCAoaW50KWx4LnNpemUoKTsgaSsrKSB7CiAgICAgICAgICAgICAgICBza2lwW2ldID0gZmFsc2U7CiAgICAgICAgICAgICAgICBsbCBoYXNoX2Z1bGwgPSBoYXNoX2xpc3RbcGpnXVsxXVtpXTsKICAgICAgICAgICAgICAgIGlmKGxhc3RbaGFzaF9mdWxsXT4wKSB7CiAgICAgICAgICAgICAgICAgICAgdisrOwogICAgICAgICAgICAgICAgICAgIGxhc3RbaGFzaF9mdWxsXS0tOwogICAgICAgICAgICAgICAgICAgIHNraXBbaV0gPSB0cnVlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvL2NvdXQgPDwgIlRJREFLIEFEQSAiIDw8IGhhc2hfZnVsbCA8PCAnXG4nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGxhc3QuY2xlYXIoKTsKICAgICAgICAgICAgZm9yKGludCBpID0wIDsgaSA8IChpbnQpbHguc2l6ZSgpOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmKHNraXBbaV0pIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxsIGhhc2hfZ2tfZnVsbCA9IGhhc2hfbGlzdFtwamddWzBdW2ldOwogICAgICAgICAgICAgICAgbGFzdFtoYXNoX2drX2Z1bGxdKys7CiAgICAgICAgICAgICAgICAvLyBjb3V0IDw8ICJNQVNVS0tBTiAiIDw8IGx4W2ldIDw8ICcgJyA8PCBoYXNoX2drX2Z1bGwgPDwgJ1xuJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcHJpbnRmKCIlZFxuIix2KTsKCiAgICB9Cn0K