#include <iostream>
#include <fstream>
#include <queue>

using namespace std;

int a[401][401];
char c[401][401];
int n,i,m;
queue< pair<int, int> > q;
pair<int, int> punct;


int ok(int i,int j,int n,int m)
{
    if(i>=0&&i<n&&j>=0&&j<m) return 1;
    return 0;
}

void citeste(int &n,int &m,int &type)
{
    //ifstream f("run.in");
    int i,j;
    cin>>type;
    cin>>n>>m;
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            cin>>c[i][j];
}

void rezolva(int xi,int yi, char col,int &maxi)
{
    q.push(make_pair(xi,yi));
    c[xi][yi]='.';
    int nr = 0;
    while(!q.empty())
    {
        punct = q.front();
        int px = punct.first;
        int py = punct.second;
        if(ok(px+1,py,n,m) && c[px+1][py]==col)
        {
            c[px+1][py] = '.';
            q.push(make_pair(px+1,py));
            nr++;
        }
          if(ok(px,py+1,n,m) && c[px][py+1]==col)
        {
            c[px][py+1] = '.';
            q.push(make_pair(px,py+1));
            nr++;
        }
         if(ok(px,py-1,n,m) && c[px][py-1]==col)
        {
            c[px][py-1] = '.';
            q.push(make_pair(px,py-1));
            nr++;
        }
         if(ok(px-1,py,n,m) && c[px-1][py]==col)
        {
            c[px-1][py] = '.';
            q.push(make_pair(px-1,py));
            nr++;
        }

        q.pop();
    }
    if(nr>maxi) maxi = nr;
}



int main()
{
    int tip,j,maxim=0;
    citeste(n,m,tip);
    if(tip==1)
    {
        for(i=0;i<n;i++)
            for(j=0;j<m;j++)
            if(c[i][j]!='.')
            rezolva(i,j,c[i][j],maxim);
    }
    cout<<maxim+1;
    return 0;
}