#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; typedef long long int ll; typedef pair P; int h, w; string s[505]; int a[10010], b[10010], c[10010], d[10010]; using Pi=pair; ll ans[10010]; int main() { cin>>h>>w; for(int i=0; i>s[i]; int q; cin>>q; vector vx(q), vy(q); for(int i=0; i>a[i]>>b[i]>>c[i]>>d[i];a[i]--; b[i]--; c[i]--; d[i]--; vx[i]=Pi(P(a[i], c[i]), i); vy[i]=Pi(P(b[i], d[i]), i); } sort(vx.begin(), vx.end()); sort(vy.begin(), vy.end()); for(int i=0; ib.first.second):(a.first.first>b.first.first);}); sort(vy.begin(), vy.end(), [](Pi a, Pi b){ return (a.first.second!=b.first.second)?(a.first.second>b.first.second):(a.first.first>b.first.first);}); for(int i=0; i=0; j--){ ll cntw=0, cnt=0; for(int k=j; k>=0; k--){ if(s[i][k]=='c') cnt+=cntw*(cntw-1)/2; else cntw++; while(tj || (vy[t].first.second==j && vy[t].first.first>=k))){ if(vy[t].first==P(k, j) && a[vy[t].second]<=i && i<=c[vy[t].second]){ ans[vy[t].second]+=cnt; } t++; } } } } for(int i=0; i=0; j--){ ll cntw=0, cnt=0; for(int k=j; k>=0; k--){ if(s[k][i]=='c') cnt+=cntw*(cntw-1)/2; else cntw++; while(tj || (vx[t].first.second==j && vx[t].first.first>=k))){ if(vx[t].first==P(k, j) && b[vx[t].second]<=i && i<=d[vx[t].second]){ ans[vx[t].second]+=cnt; } t++; } } } } for(int i=0; i