#include <bits/stdc++.h>
using namespace std;
#define int long long
int mod=1e9+7,fc=929;
bool mt(string a,string b)
{
bool w=1;
for (int i=0;i<a.size();i++)
{
if (a[i]==b[i]) continue;
w=0;
break;
}
if (w)
return w;
w=1;
for (int i=0;i<a.size();i++)
{
if (a[i]==b[i+1]) continue;
w=0;
break;
}
return w;
}
int hsh(string a)
{
int n=a.size();
int ans=0;
for (int i=0;i<n;i++)
{
ans=(ans*fc)+a[i];
ans%=mod;
}
return ans;
}
inline void solve()
{
int n,k;
cin>>n>>k;
string a[n][k];
int hash[n][k][3]={};
for (int i=0;i<n;i++)
for (int j=0;j<k;j++)
{
cin>>a[i][j];
hash[i][j][2]=hsh(a[i][j]);
string s;
for (int p=0;p<i;p++)
s+=a[i][j][p];
hash[i][j][0]=hsh(s);
s={};
for (int p=1;p<=i;p++)
s+=a[i][j][p];
hash[i][j][1]=hsh(s);
}
int dp[n][k]={};
for (int i=0;i<k;i++)
dp[0][i]=1;
for (int i=0;i+1<n;i++)
{
for (int j=0;j<k;j++)
{
if (dp[i][j]==0) continue;
for (int l=0;l<k;l++)
{
if ((hash[i][j][2]==hash[i+1][l][0])||(hash[i][j][2]==hash[i+1][l][1]))
{
dp[i+1][l]+=dp[i][j];
if (dp[i+1][l]>=mod)
dp[i+1][l]-=mod;
}
}
}
}
int ans=0;
for (int i=0;i<k;i++)
{
ans+=dp[n-1][i];
if (ans>=mod)
ans-=mod;
}
cout<<ans<<endl;
}
signed main()
{
ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
int t=1;
for (int i=1;i<=t;i++)
{
solve();
}
}