#include<bits/stdc++.h>
using namespace std;
struct node{
int m,son[70];
}p;
vector<node>f;
int zh(char c){
if(c>='0'&&c<='9')return c-'0';
if(c>='A'&&c<='Z')return c-'A'+10;
return c-'a'+36;
}
void build(int x,int y,string s){
f[x].m++;
if(y==s.size())return;
int c=zh(s[y]);
if(!f[x].son[c]){
f.push_back(p);
f[x].son[c]=f.size()-1;
}
build(f[x].son[c],y+1,s);
}
int main(){
string s;
int n,i,ans,kase=0;
f.push_back(p);
while(scanf("%d",&n)&&n){
getchar();
kase++;
for(i=1;i<=n;i++){
getline(cin,s);
build(0,0,s);
}
ans=0;
for(i=1;i<f.size();i++){
ans+=f[i].m*(f[i].m-1)/2;
f[i].m=0;
}
printf("Case %d: %d\n",kase,ans+n*(n-1)/2);
}
return 0;
}
12-15
11-23
371
07-24
309
03-12