#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
int n, k, tot=0, trie[20005][5], exist[20005], dp[20005][5], siz[20005];
vector<int> nbr[20005];
int get_num(char ch)
{
if(ch=='l')return 1;
if(ch=='q')return 2;
if(ch=='b')return 3;
}
void insert(string s)
{
int cur=0;
for(int i=0;i<s.size();i++)
{
int ch=get_num(s[i]);
if(trie[cur][ch]==0)
{
trie[cur][ch]=++tot;
}
nbr[cur].push_back(trie[cur][ch]);
cur=trie[cur][ch];
}
}
void dfs(int cur)
{
dp[cur][1]=1;
siz[cur]=1;
for(int nxt:nbr[cur])
{
dfs(nxt);
siz[cur]+=siz[nxt];
for(int j=min(siz[cur],k);j>=0;j--)
{
for(int p=0;p<=min(j,siz[nxt]);p++)
{
dp[cur][j]=(dp[cur][j]+dp[cur][j-p]*dp[nxt][p]%mod)%mod;
}
}
}
}
signed main()
{
ios::sync_with_stdio(0),cin.tie(0);
for(int i=0;i<=20004;i++)siz[i]=1;
cin>>n>>k;
for(int i=1;i<=n;i++)
{
string s;
cin>>s;
insert(s);
}
dfs(0);
cout<<dp[0][k]%mod;
}