#include<fstream>
#include<iostream>
using namespace std;
const int dx[4]={-1,1,0,0};
const int dy[4]={0,0,-1,1};
char a[20][20],s[50];
int n,m,io,jo,b[20][20],i,j,maxx;
ifstream f("r.in");
void afis(int k)
{ for(int i=0;i<=k;i++)
cout<<s[i];
}
int inside(int i,int j)
{
return i>=1 && i<=n && j>=1 && j<=m;
}
void back(int i, int j, int pas)
{ int k,inou,jnou;
b[i][j]=1;
if (pas>maxx) maxx=pas;
for(k=0;k<4;k++)
{ inou=i+dx[k];
jnou=j+dy[k];
if (inside(inou,jnou) && a[inou][jnou]==s[pas+1] && b[inou][jnou]==0)
{
back(inou,jnou,pas+1);
}
}
b[i][j]=0;
}
int main()
{ f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
f>>a[i][j];
f>>s;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==s[0]) back(i,j,0);
afis(maxx);
return 0;
}
|