#include<bits/stdc++.h>
using namespace std;
char a[1001][1001];
int ans;
int f[1001][1001];
int dx[]= {0,-1,1,0,0};
int dy[]= {0,0,0,-1,1};
int n,m;
void dfs(int x,int y,int s) {
if((f[x-1][y]==1&&f[x+1][y]==1&&f[x][y+1]==1&&f[x][y-1]==1)||(a[x-1][y]!=!a[x][y]&&a[x+1][y]!=!a[x][y]&&a[x][y+1]!=!a[x][y]&&a[x][y-1]!=!a[x][y])) {
// cout<<"--- ";
ans=max(ans,s);
return ;
}
for(int i=1; i<=4; i++) {
int x1=x+dx[i];
int y1=y+dy[i];
if(x1>=1&&x1<=n&&y1>=1&&y1<=n&&f[x1][y1]==0&&a[x1][y1]!=a[x][y]) {
// cout<<"- ";
f[x1][y1]=1;
dfs(x1,y1,s+1);
f[x1][y1]=0;
}
}
}
int main() {
cin>>n>>m;
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
cin>>a[i][j];
}
}
for(int i=0; i<=n+1; i++) {
for(int j=0; j<=n+1; j++) {
f[i][j]=1;
}
}
for(int i=1; i<=m; i++) {
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
f[i][j]=0;
}
}
ans=0;
int s1,s2;
cin>>s1>>s2;
f[s1][s2]=1;
dfs(s1,s2,1);
cout<<ans<<endl;
}
return 0;
}
求求了,WA和TLE