#include <bits/stdc++.h>
#define ____AnhKietSS____ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define NamDinh signed
#define ii pair<int,int>
#define ll long long
#define foru(i,d,c) for(int i=(d);i<=(c);i++)
#define ford(i,d,c) for(int i=(d);i>=(c);i--)
#define fi first
#define se second
#define pb push_back
#define pf push_front
using namespace std;
const ll INF=4557430888798830399LL;
struct Edge
{
int v;
ll w;
};
int n,m,k,q;
vector<vector<Edge> > a;
int id(int r,int c)
{
return r*m+c;
}
ll dijkstra(int s,int t)
{
if(s==t)return 0;
vector<ll> d(n*m,INF);
priority_queue<pair<ll,int>,vector<pair<ll,int> >,greater<pair<ll,int> > > pq;
d[s]=0;
pq.push({0,s});
while(!pq.empty())
{
ll du=pq.top().fi;
int u=pq.top().se;
pq.pop();
if(du!=d[u])continue;
if(u==t)return du;
for(int i=0;i<(int)a[u].size();i++)
{
int v=a[u][i].v;
ll w=a[u][i].w;
if(d[v]>d[u]+w)
{
d[v]=d[u]+w;
pq.push({d[v],v});
}
}
}
return -1;
}
NamDinh main()
{
____AnhKietSS____
freopen("MAZE.INP","r",stdin);
freopen("MAZE.OUT","w",stdout);
cin>>n>>m>>k>>q;
vector<string> s(n);
foru(i,0,n-1)cin>>s[i];
a.resize(n*m);
int dx[4]={-1,1,0,0};
int dy[4]={0,0,-1,1};
foru(i,0,n-1)
{
foru(j,0,m-1)
{
if(s[i][j]=='#')continue;
int u=id(i,j);
foru(z,0,3)
{
int x=i+dx[z];
int y=j+dy[z];
if(x>=0&&x<n&&y>=0&&y<m&&s[x][y]=='.')
{
int v=id(x,y);
a[u].pb({v,1});
}
}
}
}
foru(i,1,k)
{
int x,y,u,v;
ll w;
cin>>x>>y>>u>>v>>w;
--x;
--y;
--u;
--v;
int p=id(x,y);
int t=id(u,v);
a[p].pb({t,w});
a[t].pb({p,w});
}
while(q--)
{
int x,y,u,v;
cin>>x>>y>>u>>v;
--x;
--y;
--u;
--v;
int s1=id(x,y);
int s2=id(u,v);
cout<<dijkstra(s1,s2)<<"\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIF9fX19BbmhLaWV0U1NfX19fIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKI2RlZmluZSBOYW1EaW5oIHNpZ25lZAojZGVmaW5lIGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBmb3J1KGksZCxjKSBmb3IoaW50IGk9KGQpO2k8PShjKTtpKyspCiNkZWZpbmUgZm9yZChpLGQsYykgZm9yKGludCBpPShkKTtpPj0oYyk7aS0tKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcGYgcHVzaF9mcm9udAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxsIElORj00NTU3NDMwODg4Nzk4ODMwMzk5TEw7CgpzdHJ1Y3QgRWRnZQp7CiAgICBpbnQgdjsKICAgIGxsIHc7Cn07CgppbnQgbixtLGsscTsKdmVjdG9yPHZlY3RvcjxFZGdlPiA+IGE7CgppbnQgaWQoaW50IHIsaW50IGMpCnsKICAgIHJldHVybiByKm0rYzsKfQoKbGwgZGlqa3N0cmEoaW50IHMsaW50IHQpCnsKICAgIGlmKHM9PXQpcmV0dXJuIDA7CgogICAgdmVjdG9yPGxsPiBkKG4qbSxJTkYpOwogICAgcHJpb3JpdHlfcXVldWU8cGFpcjxsbCxpbnQ+LHZlY3RvcjxwYWlyPGxsLGludD4gPixncmVhdGVyPHBhaXI8bGwsaW50PiA+ID4gcHE7CgogICAgZFtzXT0wOwogICAgcHEucHVzaCh7MCxzfSk7CgogICAgd2hpbGUoIXBxLmVtcHR5KCkpCiAgICB7CiAgICAgICAgbGwgZHU9cHEudG9wKCkuZmk7CiAgICAgICAgaW50IHU9cHEudG9wKCkuc2U7CiAgICAgICAgcHEucG9wKCk7CgogICAgICAgIGlmKGR1IT1kW3VdKWNvbnRpbnVlOwogICAgICAgIGlmKHU9PXQpcmV0dXJuIGR1OwoKICAgICAgICBmb3IoaW50IGk9MDtpPChpbnQpYVt1XS5zaXplKCk7aSsrKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHY9YVt1XVtpXS52OwogICAgICAgICAgICBsbCB3PWFbdV1baV0udzsKCiAgICAgICAgICAgIGlmKGRbdl0+ZFt1XSt3KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkW3ZdPWRbdV0rdzsKICAgICAgICAgICAgICAgIHBxLnB1c2goe2Rbdl0sdn0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAtMTsKfQoKTmFtRGluaCBtYWluKCkKewogICAgX19fX0FuaEtpZXRTU19fX18KCiAgICBmcmVvcGVuKCJNQVpFLklOUCIsInIiLHN0ZGluKTsKICAgIGZyZW9wZW4oIk1BWkUuT1VUIiwidyIsc3Rkb3V0KTsKCiAgICBjaW4+Pm4+Pm0+Pms+PnE7CgogICAgdmVjdG9yPHN0cmluZz4gcyhuKTsKICAgIGZvcnUoaSwwLG4tMSljaW4+PnNbaV07CgogICAgYS5yZXNpemUobiptKTsKCiAgICBpbnQgZHhbNF09ey0xLDEsMCwwfTsKICAgIGludCBkeVs0XT17MCwwLC0xLDF9OwoKICAgIGZvcnUoaSwwLG4tMSkKICAgIHsKICAgICAgICBmb3J1KGosMCxtLTEpCiAgICAgICAgewogICAgICAgICAgICBpZihzW2ldW2pdPT0nIycpY29udGludWU7CgogICAgICAgICAgICBpbnQgdT1pZChpLGopOwoKICAgICAgICAgICAgZm9ydSh6LDAsMykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaW50IHg9aStkeFt6XTsKICAgICAgICAgICAgICAgIGludCB5PWorZHlbel07CgogICAgICAgICAgICAgICAgaWYoeD49MCYmeDxuJiZ5Pj0wJiZ5PG0mJnNbeF1beV09PScuJykKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpbnQgdj1pZCh4LHkpOwogICAgICAgICAgICAgICAgICAgIGFbdV0ucGIoe3YsMX0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZvcnUoaSwxLGspCiAgICB7CiAgICAgICAgaW50IHgseSx1LHY7CiAgICAgICAgbGwgdzsKCiAgICAgICAgY2luPj54Pj55Pj51Pj52Pj53OwoKICAgICAgICAtLXg7CiAgICAgICAgLS15OwogICAgICAgIC0tdTsKICAgICAgICAtLXY7CgogICAgICAgIGludCBwPWlkKHgseSk7CiAgICAgICAgaW50IHQ9aWQodSx2KTsKCiAgICAgICAgYVtwXS5wYih7dCx3fSk7CiAgICAgICAgYVt0XS5wYih7cCx3fSk7CiAgICB9CgogICAgd2hpbGUocS0tKQogICAgewogICAgICAgIGludCB4LHksdSx2OwoKICAgICAgICBjaW4+Png+Pnk+PnU+PnY7CgogICAgICAgIC0teDsKICAgICAgICAtLXk7CiAgICAgICAgLS11OwogICAgICAgIC0tdjsKCiAgICAgICAgaW50IHMxPWlkKHgseSk7CiAgICAgICAgaW50IHMyPWlkKHUsdik7CgogICAgICAgIGNvdXQ8PGRpamtzdHJhKHMxLHMyKTw8IlxuIjsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==