#include<stdio.h>
#include<iostream>
using namespace std;
char A[1020][1020];
typedef struct
{
  int J;
  int O;
  int I;
}Sum;
Sum B[1020][1020];
int n,m,k;
void SumInput()
{
  for(int i=1;i<=n;i++)
    {
      for(int j=1;j<=m;j++)
	{
	  B[i][j].J=B[i-1][j].J+B[i][j-1].J-B[i-1][j-1].J;
	  B[i][j].O=B[i-1][j].O+B[i][j-1].O-B[i-1][j-1].O;
	  B[i][j].I=B[i-1][j].I+B[i][j-1].I-B[i-1][j-1].I;
	  switch(A[i][j])
	    {
	    case 'J':
	      B[i][j].J+=1;
	      // cout<<"i="<<i<<" "<<"j="<<j<<" "<<A[i][j]<<endl;
	      break;
	    case 'O':
	      B[i][j].O+=1;break;
	    case 'I':
	      B[i][j].I+=1;break;
	    }
	}
    }
}
void Print()
{
 for(int i=0;i<=n;i++)
    {
      for(int j=0;j<=m;j++)
	{
	  cout<<B[i][j].J<<" ";
	}
      cout<<endl;
    }
}
int main()
{
  int a,b,c,d;
  int ju,oc,ic;
  cin>>n>>m>>k;
  //cout <<n<<" "<<m<<" "<<k<<endl;
  for(int i=1;i<=n;i++)
    {
      for(int j=1;j<=m;j++)
	{
	  cin>>A[i][j];
	}
    }
  SumInput();
  // Print();
   for(int i=0;i<k;i++)
    {
      cin>>a>>b>>c>>d;
      ju=B[c][d].J+B[a-1][b-1].J-B[a-1][d].J-B[c][b-1].J;
      oc=B[c][d].O+B[a-1][b-1].O-B[a-1][d].O-B[c][b-1].O;
      ic=B[c][d].I+B[a-1][b-1].I-B[a-1][d].I-B[c][b-1].I;
      cout<<ju<<" "<<oc<<" "<<ic<<endl;
      }
  return 0;
}