lgP1141
#include<bits/stdc++.h>
using namespace std;
struct node{
int x,y,step;
}que[1000001];
int n,m,xn,yyn,head=1,tail=1;
char a[1001][1001];
bool vis[1001][1001];
int dx[8]={0,1,-1,0},dy[8]={1,0,0,-1};
void bfs()
{
tail=1;
head=1;
vis[xn][yyn]=1;
que[head].x=xn;
que[head].y=yyn;
que[head].step=1;
tail++;
while(head<tail)
{
for(int i=0;i<4;i++)
{
int tx=que[head].x+dx[i],ty=que[head].y+dy[i];
if((vis[tx][ty]||tx>=n||ty>=n||tx<0||ty<0)||(a[que[head].x][que[head].y]==a[tx][ty]))
{
continue;
}
else
{
vis[tx][ty]=1;
que[head].x=tx;
que[head].y=ty;
que[head].step=que[head-1].step+1;
tail++;
}
}
head++;
}
cout<<que[head-1].step<<"\n";
return;
}
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cin>>a[i][j];
}
}
for(int i=0;i<m;i++)
{
memset(que,0,sizeof(que));
memset(vis,0,sizeof(vis));
cin>>xn>>yyn;
bfs();
}
}