#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=111;
int n;
double limit;
char str[N][N];
int pre[N],len[N],dp[N][N];
int find(int k)
{
    if(pre[k]==k)    return k;
    pre[k]=find(pre[k]);
    return pre[k];
}
int cal(int a,int b)
{
    int i,l;
    int max=0;
    memset(dp[0],0,sizeof(dp[0]));
    for(i=1;i<=len[a];i++)
    {
        dp[i][0]=0;
        for(l=1;l<=len[b];l++)
        {
            if(str[a][i]==str[b][l])    dp[i][l]=dp[i-1][l-1]+1;
            else    dp[i][l]=0;
            if(dp[i][l]>max)    max=dp[i][l];
        }
    }
    return max;
}
int main()
{
    int Case=1;
    int i,l;
    int f1,f2,cnt,ans;
    while(scanf("%d%lf",&n,&limit)!=-1)
    {
        for(i=0;i<n;i++)    pre[i]=i;
        for(i=0;i<n;i++)
        {
            scanf("%s",str[i]+1);
            str[i][0]=' ';
            len[i]=strlen(str[i])-1;
            for(l=0;l<i;l++)
            {
                f1=find(i);
                f2=find(l);
                if(f1==f2)    continue;
                cnt=cal(i,l);
                if(cnt*100.0/len[i]>limit && cnt*100.0/len[l]>limit)    pre[f1]=f2;
            }
        }
        ans=0;
        for(i=0;i<n;i++)    if(pre[i]==i)    ans++;
        printf("Case %d:\n",Case++);
        cout<<ans<<endl;
    }
    return 0;
}