#include <iostream>
#include <string>
using namespace std;
struct po{int J,O,I;};
string mp[1001];
int h,w,n;
po memo[1002][1002];

void make_memo() {
  for(int i=0;i<h;i++)
    for(int j=0;j<w;j++){
      if(j != 0)memo[i][j] = memo[i][j-1];
      if(mp[i][j] == 'J') memo[i][j].J++;
      else if(mp[i][j] == 'O') memo[i][j].O++;
      else if(mp[i][j] == 'I') memo[i][j].I++;
    }
}

po com(int a,int b,int c,int d){
  po res;
  res.J = res.O = res.I = 0;
  for(int i=a;i<=c;i++) {
    res.J += memo[i][d].J;
    res.O += memo[i][d].O;
    res.I += memo[i][d].I;
    if(b== 0) continue;
    res.J -=memo[i][b-1].J;
    res.O -=memo[i][b-1].O;
    res.I -=memo[i][b-1].I;
  }
  return res;
}

int main() {
  cin >> h >>w >> n;
  for(int i=0;i<h;i++) cin >> mp[i];
  make_memo();
  for(int q=0;q<n;q++){
    int a,b,c,d;
    cin >> a >> b >> c>>d;
    a--,b--,c--,d--;
    po ans = com(a,b,c,d);
    cout << ans.J <<" "<<ans.O<<" "<<ans.I<<endl;
  }

  return 0;
}