//Author: AnandRaj uux
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<pii> vpii;
typedef pair<ll,ll> pll;
typedef vector<ll> vl;
typedef vector<vl> vvl;
typedef vector<pll> vpll;
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define test() int t;cin>>t;while(t--)
#define forn(i,f,n) for(int i=f;i<f+n;i++)
#define rforn(i,l,n) for(int i=l;i>l-n;i--)
#define all(v) v.begin(),v.end()
#define prin(V) for(auto v:V) cout<<v<<" ";cout<<endl
#define take(V,f,n) for(int i=f;i<f+n;i++) cin>>V[i]
#define what(x) cerr<<#x<<" = "<<x<<endl
#define KStest() int t,t1;cin>>t;t1=t;while(t--)
#define KScout cout<<"Case #"<<t1-t<<": "
const int MOD = 1e9+7,MAX = 1e5+5;
/////////////////FastExp///////////////////
ll powN(ll a,ll p)
{
if(p==0) return 1;
ll z=powN(a,p/2);
z=(z*z)%MOD;
if(p%2) z=(z*a)%MOD;
return z;
}
/////////////////FastExp///////////////////
//////////////////Sieve////////////////////
vector<bool> is_prime(MAX+1, true);
void Sieve()
{
is_prime[0] = is_prime[1] = false;
int i,j;
for (i = 2; i*i <= MAX; i++)
{
if (is_prime[i])
{
for (j = i * i; j <= MAX; j += i)
is_prime[j] = false;
}
}
}
//////////////////Sieve////////////////////
int main()
{
KStest()
{
int n,k;
cin>>n>>k;
vector<string> V(n);
take(V,0,n);
sort(all(V));
vvl H(n);
int maxsi=0;
int p=31;
//Hash Matrix
for(int i=0;i<n;i++)
{
H[i].push_back(0);
ll hash=0;
ll ppow=1;
for(auto c:V[i])
{
hash=(hash+ppow*(c-'A'+1))%MOD;
ppow=(ppow*p)%MOD;
H[i].push_back(hash);
}
maxsi=max(maxsi,(int)V[i].size());
}
int ans=0;
set<int> Done;
for(int len=maxsi;len>=0;len--) //Start from biggest length
{
map<ll,set<int>> M; //Map for Hashes
for(int i=0;i<n;i++)
{
if(Done.count(i)) continue;
if(V[i].size()<len) continue;
M[H[i][len]].insert(i);
}
for(auto m:M) //Iterate over all prefix of that length
{
while(m.second.size()>=k)
{
vi Ne; //Removing groups of K if possible
for(auto s:m.second)
{
Ne.push_back(s);
Done.insert(s);
if(Ne.size()==k) break;
}
for(auto ne:Ne)
{
m.second.erase(ne);
}
ans+=len;
}
}
}
KScout<<ans<<endl;
}
}
Ly9BdXRob3I6IEFuYW5kUmFqIHV1eAojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOwp0eXBlZGVmIHBhaXI8aW50LGludD4gcGlpOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIHZlY3Rvcjx2aT4gdnZpOwp0eXBlZGVmIHZlY3RvcjxwaWk+IHZwaWk7CnR5cGVkZWYgcGFpcjxsbCxsbD4gcGxsOwp0eXBlZGVmIHZlY3RvcjxsbD4gdmw7CnR5cGVkZWYgdmVjdG9yPHZsPiB2dmw7CnR5cGVkZWYgdmVjdG9yPHBsbD4gdnBsbDsgCgojZGVmaW5lIGZhc3RpbyBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApO2Npbi50aWUoMCk7Y291dC50aWUoMCk7CiNkZWZpbmUgdGVzdCgpIGludCB0O2Npbj4+dDt3aGlsZSh0LS0pCiNkZWZpbmUgZm9ybihpLGYsbikgZm9yKGludCBpPWY7aTxmK247aSsrKQojZGVmaW5lIHJmb3JuKGksbCxuKSBmb3IoaW50IGk9bDtpPmwtbjtpLS0pCiNkZWZpbmUgYWxsKHYpIHYuYmVnaW4oKSx2LmVuZCgpCiNkZWZpbmUgcHJpbihWKSBmb3IoYXV0byB2OlYpIGNvdXQ8PHY8PCIgIjtjb3V0PDxlbmRsCiNkZWZpbmUgdGFrZShWLGYsbikgZm9yKGludCBpPWY7aTxmK247aSsrKSBjaW4+PlZbaV0KI2RlZmluZSB3aGF0KHgpIGNlcnI8PCN4PDwiID0gIjw8eDw8ZW5kbAojZGVmaW5lIEtTdGVzdCgpIGludCB0LHQxO2Npbj4+dDt0MT10O3doaWxlKHQtLSkKI2RlZmluZSBLU2NvdXQgY291dDw8IkNhc2UgIyI8PHQxLXQ8PCI6ICIKCmNvbnN0IGludCBNT0QgPSAxZTkrNyxNQVggPSAxZTUrNTsKLy8vLy8vLy8vLy8vLy8vLy9GYXN0RXhwLy8vLy8vLy8vLy8vLy8vLy8vLwpsbCBwb3dOKGxsIGEsbGwgcCkKewoJaWYocD09MCkgcmV0dXJuIDE7CglsbCB6PXBvd04oYSxwLzIpOwoJej0oeip6KSVNT0Q7CglpZihwJTIpIHo9KHoqYSklTU9EOwoJcmV0dXJuIHo7Cn0KLy8vLy8vLy8vLy8vLy8vLy9GYXN0RXhwLy8vLy8vLy8vLy8vLy8vLy8vLwovLy8vLy8vLy8vLy8vLy8vLy9TaWV2ZS8vLy8vLy8vLy8vLy8vLy8vLy8vCnZlY3Rvcjxib29sPiBpc19wcmltZShNQVgrMSwgdHJ1ZSk7CnZvaWQgU2lldmUoKQp7Cglpc19wcmltZVswXSA9IGlzX3ByaW1lWzFdID0gZmFsc2U7CglpbnQgaSxqOwoJZm9yIChpID0gMjsgaSppIDw9IE1BWDsgaSsrKSAKCXsKICAgIAlpZiAoaXNfcHJpbWVbaV0pIAogICAgCXsKICAgICAgICAJZm9yIChqID0gaSAqIGk7IGogPD0gTUFYOyBqICs9IGkpCiAgICAgICAgICAgIAlpc19wcmltZVtqXSA9IGZhbHNlOwogICAgCX0KCX0KfQovLy8vLy8vLy8vLy8vLy8vLy9TaWV2ZS8vLy8vLy8vLy8vLy8vLy8vLy8vCgppbnQgbWFpbigpCnsKCUtTdGVzdCgpCgl7CgkJaW50IG4sazsKCQljaW4+Pm4+Pms7CgkJdmVjdG9yPHN0cmluZz4gVihuKTsKCQl0YWtlKFYsMCxuKTsKCQlzb3J0KGFsbChWKSk7CgkJdnZsIEgobik7CgkJaW50IG1heHNpPTA7CgkJaW50IHA9MzE7CgoJCS8vSGFzaCBNYXRyaXgKCQlmb3IoaW50IGk9MDtpPG47aSsrKQoJCXsKCQkJSFtpXS5wdXNoX2JhY2soMCk7CgkJCWxsIGhhc2g9MDsKCQkJbGwgcHBvdz0xOwoJCQlmb3IoYXV0byBjOlZbaV0pCgkJCXsKCQkJCWhhc2g9KGhhc2grcHBvdyooYy0nQScrMSkpJU1PRDsKCQkJCXBwb3c9KHBwb3cqcCklTU9EOwoJCQkJSFtpXS5wdXNoX2JhY2soaGFzaCk7CgkJCX0KCQkJbWF4c2k9bWF4KG1heHNpLChpbnQpVltpXS5zaXplKCkpOwoJCX0KCgkJaW50IGFucz0wOwoJCXNldDxpbnQ+IERvbmU7CgoJCWZvcihpbnQgbGVuPW1heHNpO2xlbj49MDtsZW4tLSkJCS8vU3RhcnQgZnJvbSBiaWdnZXN0IGxlbmd0aAoJCXsKCQkJbWFwPGxsLHNldDxpbnQ+PiBNOwkJCQkvL01hcCBmb3IgSGFzaGVzCgkJCWZvcihpbnQgaT0wO2k8bjtpKyspCgkJCXsKCQkJCWlmKERvbmUuY291bnQoaSkpIGNvbnRpbnVlOwoJCQkJaWYoVltpXS5zaXplKCk8bGVuKSBjb250aW51ZTsKCQkJCU1bSFtpXVtsZW5dXS5pbnNlcnQoaSk7CgkJCX0KCQkJZm9yKGF1dG8gbTpNKQkJCQkJLy9JdGVyYXRlIG92ZXIgYWxsIHByZWZpeCBvZiB0aGF0IGxlbmd0aCAKCQkJewoJCQkJd2hpbGUobS5zZWNvbmQuc2l6ZSgpPj1rKQoJCQkJewoJCQkJCXZpIE5lOwkJCQkJLy9SZW1vdmluZyBncm91cHMgb2YgSyBpZiBwb3NzaWJsZQoJCQkJCWZvcihhdXRvIHM6bS5zZWNvbmQpCgkJCQkJewoJCQkJCQlOZS5wdXNoX2JhY2socyk7CgkJCQkJCURvbmUuaW5zZXJ0KHMpOwoJCQkJCQlpZihOZS5zaXplKCk9PWspIGJyZWFrOwoJCQkJCX0KCQkJCQlmb3IoYXV0byBuZTpOZSkKCQkJCQl7CgkJCQkJCW0uc2Vjb25kLmVyYXNlKG5lKTsKCQkJCQl9CgkJCQkJYW5zKz1sZW47CgkJCQl9CgkJCX0KCQl9CgkJS1Njb3V0PDxhbnM8PGVuZGw7Cgl9Cn0JCQ==