#include <bits/stdc++.h>
#define DMAX 405
#define x first
#define y second
using namespace std;

int M[DMAX][DMAX], n, m;
int use[DMAX][DMAX];
int c[DMAX][DMAX];
int D[DMAX][DMAX];
int dx[]= {0, 1, -1, 0};
int dy[]= {1, 0, 0, -1};
int a, b, maxM, color;
int dif;

void replace_m(int x, int y)
{

    for(int i=0; i<4; i++)
        if(maxM<M[x+dx[i]][y+dy[i]])
        {
            maxM=M[x+dx[i]][y+dy[i]];
            a=x, b=y;
            color=c[x+dx[i]][y+dy[i]];
        }

    for(int i=0; i<4; i++)
        for(int j=0; j<4; j++)
        {
            if(D[x+dx[i]][y+dy[i]]!=D[x+dx[j]][y+dy[j]])
            if(c[x+dx[i]][y+dy[i]]==c[x+dx[j]][y+dy[j]] && maxM<M[x+dx[i]][y+dy[i]]+M[x+dx[j]][y+dy[j]]+1)
            {
                a=x, b=y;
                maxM=M[x+dx[i]][y+dy[i]]+M[x+dx[j]][y+dy[j]]+1;
                color=c[x+dx[j]][y+dy[j]];
            }
        }
}

void lee(int x, int y)
{

    queue <pair<int, int> > q;
    queue <pair<int, int> > pp;
    use[x][y]=1;
    q.push({x, y});
    pp.push({x, y});
    int cc=0;
    while(!q.empty())
    {
        pair<int, int > p = q.front();
        q.pop();
        cc++;
        for(int i=0; i<4; i++)
            if(use[p.x+dx[i]][p.y+dy[i]]==0 && c[p.x][p.y]==c[p.x+dx[i]][p.y+dy[i]])
            {
                q.push({p.x+dx[i],p.y+dy[i]});
                pp.push({p.x+dx[i],p.y+dy[i]});
                use[p.x+dx[i]][p.y+dy[i]]=1;
            }

        }

    while(!pp.empty())
    {
        pair<int, int > g = pp.front();
        pp.pop();
        M[g.x][g.y]=cc;
        D[g.x][g.y]=dif;
    }
    dif++;

}

void bordeaza()
{
    for(int i=1; i<=m; i++)
    {
        use[0][i]=-1;
        use[n+1][i]=-1;
    }
    for(int i=1; i<=n; i++)
    {
        use[i][0]=-1;
        use[i][m+1]=-1;
    }
}

int main()
{
    int t;
    cin.sync_with_stdio(false);
    cout.sync_with_stdio(false);
    cin>>t;
    cin>>n>>m;
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
        {
            char f;
            cin>>f;
            c[i][j]=f-'a';
        }

    bordeaza();

    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
            if(!use[i][j])
                lee(i, j);

    if(t==1)
    {
        for(int i=1; i<=n; i++)
            for(int j=1; j<=m; j++)
                if(M[i][j]>maxM)
                    maxM=M[i][j];
        cout<<maxM<<'\n';
    }
    else
    {
//        for(int i=1; i<=n; i++)
//            for(int j=1; j<=m; j++)
//                cout<<D[i][j]<<" \n"[j==m];

        for(int i=1; i<=n; i++)
            for(int j=1; j<=m; j++)
                replace_m(i, j);
    cout<<a<<' '<<b<<'\n'<<char(color+'a');
    }

    return 0;
}