#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <stack>
#include <cstring>
 
#define FOR(i, a, b) for(int i = (a); i < (b); i++)
#define rep(i, n) for(int i = 0; i < (n); i++)
#define MP make_pair
#define X first
#define Y second
#define all(v) v.begin(), v.end()
 
using namespace std;
 
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> P;

const int INF = 1<<29;


int dat[3][1001][1001];

int get(int x, int y, int idx){
	if(x < 0 || y < 0) return 0;
	return dat[idx][y][x];
}

void query(int y1, int x1, int y2, int x2){
	rep(i, 3){
		int ans = 0;
		ans = get(x2, y2, i) - get(x1-1, y2, i) - get(x2, y1-1, i) + get(x1-1, y1-1, i);
		cout << (i?" ":"") << ans;
	}
	cout << endl;
}

int main(){
	int h, w, k;
	cin >> h >> w >> k;
	vector<string> v(h);
	rep(i, h) cin >> v[i];

	rep(i, h){
		rep(j, w){
			rep(k, 3){
				dat[k][i][j] = get(j-1, i, k)+get(j, i-1, k)-get(j-1, i-1, k);
				if(v[i][j] == "JOI"[k]) dat[k][i][j]++;
			}
		}
	}

	rep(i, k){
		int a, b, c, d;
		cin >> a >> b >> c >> d;
		query(a-1, b-1, c-1, d-1);
	}

    return 0;
}