#include<bits/stdc++.h>
#define N 10005
#define M 10005
#define MOD 10007
using namespace std;
int n,m;
int tr[N][27],tot;
int fail[N];
bool word[N];
char s[M];
int dp[105][N];
int ans,cnt=1;
void insert(char s[])
{
int p=0,len=strlen(s);
for(int i=0;i<len;i++)
{
int &to=tr[p][s[i]-'A'];
if(!to)to=++tot;
p=to;
}
word[p]|=1;
}
void getfail()
{
queue<int>q;
for(int i=0;i<26;i++)
if(tr[0][i])q.push(tr[0][i]);
while(!q.empty())
{
int p=q.front();
q.pop();
for(int i=0;i<26;i++)
{
if(tr[p][i])
{
word[tr[p][i]]|=word[tr[fail[p]][i]];
fail[tr[p][i]]=tr[fail[p]][i];
q.push(tr[p][i]);
}
}
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>s;
insert(s);
}
getfail();
dp[0][0]=1;
for(int i=1;i<=m;i++)
for(int j=0;j<=tot;j++)
for(int k=0;k<26;k++)
if(!word[tr[j][k]])
{
dp[i][tr[j][k]]+=dp[i-1][j];
dp[i][tr[j][k]]%=MOD;
}
for(int i=0;i<=tot;i++)
{
ans+=dp[m][i];
ans%=MOD;
}
for(int i=1;i<=m;i++)
{
cnt*=26;
cnt%=MOD;
}
cout<<(cnt-ans+MOD)%MOD;
return 0;
}