#include <bits/stdc++.h>
using namespace std;

int dx[] = {1,0,-1,0,1,-1,1,-1};
int dy[] = {0,1,0,-1,-1,1,1,-1};

int h,w;
char s[15][25];
string ans;

void dfs(int py,int px, int y, int x,int k,string cur,set<string> &dic){
    if(dic.count(cur)){
        if(cur.size() > ans.size()) ans = cur;
        if(cur.size() == ans.size()){
            if(cur < ans) ans = cur;
        }
    }
    else dic.insert(cur);

    if(px == x && py == y) return;

    int vx = (x+dx[k]+w) % w;
    int vy = (y+dy[k]+h) % h;

    dfs(py,px,vy,vx,k,cur+s[y][x],dic);
    return;
}

int main(){

    while(1){
        set<string> dic;
        cin>>h>>w;
        if(h == 0 && w == 0) break;

        for(int i=0; i<h; i++){
            for(int j=0; j<w; j++){
                cin>>s[i][j];
            }
        }

        ans = "";

        for(int i=0; i<h; i++){
            for(int j=0; j<w; j++){
                string cur = "";
                for(int k=0; k<8; k++){
                    int vx = (j+dx[k]+w) % w;
                    int vy = (i+dy[k]+h) % h;
                    dfs(i,j,vy,vx,k,cur+s[i][j],dic);
                }
            }
        }

        if(ans.size() <= 1) cout<<"0"<<endl;
        else cout<<ans<<endl;
    }

    return 0;
}
