#include<stdio.h>
#include<string.h>
#include<time.h>
int x,y,dx[8]={0,1,1,1,0,-1,-1,-1},dy[8]={1,1,0,-1,-1,-1,0,1},co[191],sps,final;
char dic[191][1000][191],sp[1000][191];
void ans(char map[20][10],int nx,int ny,int dir){
	int fx,fy,len,po,qw,sw,ck;
	char dam[191]={};
	fx=nx;
	fy=ny;
	len=0;
	while(1){
		dam[len]=map[nx][ny];
		len++;
		if(len>=final){
			sw=ck=0;
			for(po=0;po<sps;po++){
				if(strcmp(sp[po],dam)==0){
					ck++;
					break;
				}
			}
			if(ck==0){
				for(po=0;po<co[len];po++){
					if(strcmp(dic[len][po],dam)==0){
						if(final<strlen(dam)){
							strcpy(sp[0],dam);
							sps=1;
							final=strlen(dam);
						}
						else{
							strcpy(sp[sps],dam);
							sps++;
						}
						sw++;
						break;
					}
				}
			}
			if(sw==0&&ck==0){
				strcpy(dic[len][co[len]],dam);
				co[len]++;
			}
		}
		nx=(nx+dx[dir]+x)%x;
		ny=(ny+dy[dir]+y)%y;
		if(nx==fx&&ny==fy){
			break;
		}
	}
	return;
}
int main(void){
	int i,j,k,maxl,t0,t1,tsum=0;
	char dn[20][10],nu;
	for(k=0;k<191;k++){
		co[k]=0;
		for(i=0;i<1000;i++){
			for(j=0;j<191;j++){
				dic[k][i][j]=sp[i][j]=0;
			}
		}
	}
	for(i=0;i<20;i++){
		for(j=0;j<10;j++){
			dn[i][j]=0;
		}
	}
	while(1){
		t0=clock();
		scanf("%d %d",&y,&x);
		if(x==0&&y==0){
			break;
		}
		for(k=0;k<191;k++){
			if(co[k]==0){
				continue;
			}
			co[k]=0;
			for(i=0;i<1000;i++){
				if(dic[k][i][0]==0){
					continue;
				}
				for(j=0;j<191;j++){
					if(dic[k][i][j]==0){
						break;
					}
					dic[k][i][j]=0;
				}
			}
		}
		for(i=0;i<1000;i++){
			if(sp[i][0]==0){
				continue;
			}
			for(j=0;j<191;j++){
				sp[i][j]=0;
			}
		}
		for(i=0;i<20;i++){
			if(dn[i][0]==0){
				break;
			}
			for(j=0;j<10;j++){
				dn[i][j]=0;
			}
		}
		i=j=0;
		while(1){
			scanf("%c",&nu);
			if(nu!='\n'){
				dn[i][j]=nu;
				i++;
				if(i==x){
					i=0;
					j++;
				}
				if(j==y){
					break;
				}
			}
		}
		sps=0;
		final=2;
		for(i=0;i<x;i++){
			for(j=0;j<y;j++){
				for(k=0;k<8;k++){
					ans(dn,i,j,k);
				}
			}
		}
		/*
		for(i=0;i<191;i++){
			printf("%d:%d",i,co[i]);
			if(i==final){
				printf("***");
			}
			printf("\n");
		}
		*/
		maxl=final;
		final=0;
		for(i=1;i<sps;i++){
			if(strcmp(sp[final],sp[i])>0){
				final=i;
			}
		}
		if(strlen(sp[final])==0){
			printf("0\n");
		}
		else{
			for(i=0;i<maxl;i++){
				printf("%c",sp[final][i]);
			}
			printf("\n");
		}
		t1=clock();
		//printf("time %d\n",t1-t0);
		tsum+=t1-t0;
	}
	//printf("Sum %d\n",tsum);
	return 0;
}