#include using namespace std; int main(){ int H,W; cin >> H >> W; vector S(H); for(int i = 0; i < H; i++){ cin >> S[i]; } vector key_sum(H+1,vector>(W+1)); for(int i = 0; i < H; i++){ for(int j = 0; j < W; j++){ for(int k = 0; k < 16; k++){ const array bits = {k % 2, (k / 2) % 2,(k / 4) % 2,k / 8}; if(S[i][j] == '.' && ( ((bits[3] || j == 0 || S[i][j - 1] == '#') && !bits[1] && j < W - 1 && S[i][j + 1] == '.')|| ((bits[0] || i == 0 || S[i - 1][j] == '#') && !bits[2] && i < H - 1 && S[i + 1][j] == '.')|| ((bits[0] || i == 0 || S[i - 1][j] == '#') && (bits[3] || j == 0 || S[i][j - 1] == '#') && (bits[2] || i == H - 1 || S[i + 1][j] == '#') && (bits[1] || j == W - 1 || S[i][j + 1] == '#')) )){ key_sum[i + 1][j + 1][k] = 1; }else{ key_sum[i + 1][j + 1][k] = 0; } } } } for(int i = 0; i <= H; i++){ for(int j = 0; j <= W; j++){ for(int k = 0; k < 16; k++){ if(i == 0 || j == 0){ key_sum[i][j][k] = 0; }else{ key_sum[i][j][k] += key_sum[i - 1][j][k] + key_sum[i][j - 1][k] - key_sum[i - 1][j - 1][k]; } } } } auto range_sum = [&](int a, int b, int c, int d, int k){ if(a > c || b > d) return 0; if(a == c && b == d){ if((key_sum[c + 1][d + 1][k] - key_sum[a][d + 1][k] > 0) && (key_sum[c + 1][d + 1][k] - key_sum[c + 1][b][k] > 0)) return 1; return 0; } return key_sum[c + 1][d + 1][k] - key_sum[c + 1][b][k] - key_sum[a][d + 1][k] + key_sum[a][b][k]; }; int Q; cin >> Q; while(Q--){ int A,B,C,D; cin >> A >> B >> C >> D; A--; B--; C--; D--; int ans = 0; ans += range_sum(A + 1, B + 1, C - 1, D - 1, 0); ans += range_sum(A, B + 1, A, D - 1, 1 | (4 * (A == C))); ans += range_sum(A + 1, D, C - 1, D, 2 | (8 * (B == D))); if(A != C) ans += range_sum(C, B + 1, C, D - 1, 4); if(B != D) ans += range_sum(A + 1, B, C - 1, B, 8); ans += range_sum(A, B, A, B, 9 | (2 * (B == D)) | (4 * (A == C))); if(B != D) ans += range_sum(A, D, A, D, 3 | (4 * (A == C))); if(A != C && B != D) ans += range_sum(C, D, C, D, 6); if(A != C) ans += range_sum(C, B, C, B, 12 | (2 * (B == D))); cout << ans << endl; } }