This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<iostream>
#include<string>
using namespace std;
const int mod=1000000007;
int n,k,dp[62][2048];
string s[62][2048];
void read()
{
	cin>>n>>k;
	for(int i=0;i<n;i++)
		for(int j=0;j<k;j++)
		{
			cin>>s[i][j];
		}
}
void solve()
{
	for(int i=0;i<k;i++)
		dp[0][i]=1;
	int rez;
	for(int i=1;i<n;i++)
		for(int j=0;j<k;j++)
			for(int p=0;p<k;p++)
			{
				rez=(int)s[i][j].find(s[i-1][p]);
				///cout<<rez<<' '<<s[i][j]<<' '<<s[i-1][p]<<endl;
				if(rez>-1)dp[i][j]=(dp[i-1][p]%mod+dp[i][j]%mod)%mod;
			}
	int ans=0,pos=n-1;
	for(int i=0;i<k;i++)
		ans=(dp[pos][i]%mod+ans%mod)%mod;
	cout<<ans<<endl;
}
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	read();
	solve();
return 0;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |