#include using namespace std; const int N = 500; const int Q = 10000; int h, w, q; char s[N][N + 1]; struct DP { int c__, cw_, cww, www; }; DP dp[N][N + 1]; void calc() { for (int i = 0; i < h; i++) { dp[i][0].c__ = dp[i][0].cw_ = dp[i][0].cww = dp[i][0].www = 0; for (int j = 0; j < w; j++) { dp[i][j + 1].c__ = dp[i][j].c__ + (s[i][j] == 'c'); dp[i][j + 1].cw_ = dp[i][j].cw_ + (s[i][j] == 'w' ? dp[i][j].c__ : 0); dp[i][j + 1].cww = dp[i][j].cww + (s[i][j] == 'w' ? dp[i][j].cw_ : 0); dp[i][j + 1].www = dp[i][j].www + (s[i][j] == 'w'); } } } int main() { std::cin >> h >> w; for (int i = 0; i < h; i++) scanf("%s", s[i]); std::cin >> q; vector y1(q), x1(q), y2(q), x2(q); for (int i = 0; i < q; i++) { scanf("%d %d %d %d", &y1[i], &x1[i], &y2[i], &x2[i]); y1[i]--; x1[i]--; y2[i]--; x2[i]--; } vector ans(q); for (int yy = 0; yy < 2; yy++) { for (int xx = 0; xx < 2; xx++) { calc(); for (int k = 0; k < q; k++) { int L = x1[k], R = x2[k] + 1; for (int i = y1[k]; i <= y2[k]; i++) { int64_t W = dp[i][R].www - dp[i][L].www; ans[k] += dp[i][R].cww - dp[i][L].cww - dp[i][L].c__ * W * (W - 1) / 2 - dp[i][L].cw_ * W; } } for (int i = 0; i < h; i++) reverse(s[i], s[i] + w); for (int i = 0; i < q; i++) { x1[i] = w - 1 - x1[i]; x2[i] = w - 1 - x2[i]; swap(x1[i], x2[i]); } } for (int i = 0; i < N; i++) for (int j = 0; j < i; j++) swap(s[i][j], s[j][i]); swap(h, w); for (int i = 0; i < q; i++) swap(y1[i], x1[i]), swap(y2[i], x2[i]); } for (int i = 0; i < q; i++) printf("%lld\n", ans[i]); }