#include <bits/stdc++.h>
#define ll int
using namespace std;
ll an[8][2]= {{0,1},{0,-1},{1,0},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};
bool vis[505][505];
string a[505];
queue<pair<ll,ll>> qp;
pair<ll,ll> pl;
int main() {
ll n,m,q,x,y;
cin >> n >> m;
for (ll i=1; i<=n; i++) {
for (ll j=1; j<=m; j++) {
cin >> a[i][j];
}
}
cin >> q;
for (ll i=0; i<q; i++) {
ll ans=0x3f3f3f;
cin >> x >> y;
for (ll j=0; j<=n; j++)
fill(vis[j],vis[j]+m+1,0);
qp.push(make_pair(x,y));
while (!qp.empty()) {
pl=qp.front();
qp.pop();
vis[pl.first][pl.second]=1;
if((pl.first-x)*(pl.first-x)+(pl.second-y)*(pl.second-y)>ans)continue;
if (a[pl.first][pl.second]=='x') {
ans=min(ans,(pl.first-x)*(pl.first-x)+(pl.second-y)*(pl.second-y));
}
for (ll j=0; j<4; j++) {
if((pl.first+an[j][0]-x)*(pl.first+an[j][0]-x)+(pl.second+an[j][1]-y)*(pl.second+an[j][1]-y)<ans&&pl.first+an[j][0]<=n&&pl.first+an[j][0]>=1&&pl.second+an[j][1]<=m&&pl.second+an[j][1]>=1&&!vis[pl.first+an[j][0]][pl.second+an[j][1]]) {
qp.push(make_pair(pl.first+an[j][0],pl.second+an[j][1]));
}
}
}
while (!qp.empty())qp.pop();
cout << ans << endl;
a[x][y]='x';
}
return 0;
}