#include #include #include #include #include #include using namespace std; const int MAX_N = 402; queue > q; vector > v; char a[MAX_N][MAX_N]; int c[MAX_N][MAX_N]; int mp[MAX_N][MAX_N],nr; bool viz[MAX_N][MAX_N]; int i,j,n,m,tip,lmax; int dx[]={0,0,-1,1}; int dy[]={1,-1,0,0}; bool ok(const int &i, const int &j){ return (i>=1 && i<=n && j>=1 && j<=m); } int bfs(int xi, int yj){ int p=0; viz[xi][yj]=1; q.push(make_pair(xi,yj)); while(v.size()) v.pop_back(); while(q.size()) { int x=q.front().first; int y=q.front().second; q.pop(); v.push_back(make_pair(x,y)); for(int j=0;j<4;j++) { int xn=x+dx[j]; int yn=y+dy[j]; if(ok(xn,yn) && !viz[xn][yn] && a[x][y]==a[xn][yn]) { viz[xn][yn]=1; q.push(make_pair(xn,yn)); } } } p=v.size(); ++nr; for(int j=0;j>tip>>n>>m; for(i=1;i<=n;i++) cin>>(a[i]+1); for(i=1;i<=n;i++) for(j=1;j<=m;j++) viz[i][j]=0; for(i=1;i<=n;i++) for(j=1;j<=m;j++) if(!viz[i][j]) lmax=max(lmax,bfs(i,j)); if(tip==1) cout<sol){ sol=c[i][j]+c[x][y]; xi=x; yj=y; col=a[i][j]; } } } cout<