#include<iostream>
using namespace std;
long long n,q,ans1,ans2;
string s[25000];
bool Plalindrome(string str){
string plalindrome_str="";
for(long long i=str.length()-1;i>=0;i--){
plalindrome_str+=str[i];
}if(plalindrome_str==str)return true;
return false;
}
void dfs(long long x,long long y){
long long lefti=x,righti=x;
string str;
if(s[x][y]=='q')str="q";
if(s[x][y]=='w')str="w";
if(s[x][y]=='e')str="e";
if(s[x][y]=='r')str="r";
if(s[x][y]=='t')str="t";
if(s[x][y]=='y')str="y";
if(s[x][y]=='u')str="u";
if(s[x][y]=='i')str="i";
if(s[x][y]=='o')str="o";
if(s[x][y]=='p')str="p";
if(s[x][y]=='a')str="a";
if(s[x][y]=='s')str="s";
if(s[x][y]=='d')str="d";
if(s[x][y]=='f')str="f";
if(s[x][y]=='g')str="g";
if(s[x][y]=='h')str="h";
if(s[x][y]=='j')str="j";
if(s[x][y]=='k')str="k";
if(s[x][y]=='l')str="l";
if(s[x][y]=='z')str="z";
if(s[x][y]=='x')str="x";
if(s[x][y]=='c')str="c";
if(s[x][y]=='v')str="v";
if(s[x][y]=='b')str="b";
if(s[x][y]=='n')str="n";
if(s[x][y]=='m')str="m";
for(;;lefti--,righti++){
if(lefti<0||righti>=n){
ans1=str.length();
break;
}
if(lefti!=righti){
str=s[lefti][y]+str;
str=str+s[righti][y];
}if(!Plalindrome(str)){
ans1=max((long long)1,(long long)str.length()-2);
break;
}
}long long leftj=y,rightj=y;
if(s[x][y]=='q')str="q";
if(s[x][y]=='w')str="w";
if(s[x][y]=='e')str="e";
if(s[x][y]=='r')str="r";
if(s[x][y]=='t')str="t";
if(s[x][y]=='y')str="y";
if(s[x][y]=='u')str="u";
if(s[x][y]=='i')str="i";
if(s[x][y]=='o')str="o";
if(s[x][y]=='p')str="p";
if(s[x][y]=='a')str="a";
if(s[x][y]=='s')str="s";
if(s[x][y]=='d')str="d";
if(s[x][y]=='f')str="f";
if(s[x][y]=='g')str="g";
if(s[x][y]=='h')str="h";
if(s[x][y]=='j')str="j";
if(s[x][y]=='k')str="k";
if(s[x][y]=='l')str="l";
if(s[x][y]=='z')str="z";
if(s[x][y]=='x')str="x";
if(s[x][y]=='c')str="c";
if(s[x][y]=='v')str="v";
if(s[x][y]=='b')str="b";
if(s[x][y]=='n')str="n";
if(s[x][y]=='m')str="m";
for(;;leftj--,rightj++){
if(leftj<0||rightj>=n){
ans2=str.length();
break;
}
if(leftj!=rightj){
str=s[x][leftj]+str;
str=str+s[x][rightj];
}if(!Plalindrome(str)){
ans2=max((long long)1,(long long)str.length()-2);
break;
}
}
}
int main(){
cin>>n>>q;
for(long long i=0;i<n;i++){
cin>>s[i];
}for(long long i=1;i<=q;i++){
long long l,r;
cin>>l>>r;
l--;
r--;
dfs(l,r);
cout<<max((long long)1,max(ans1,ans2))<<endl;
ans1=0;
ans2=0;
}
return 0;
}