using System;

public class Hello
{
    public static void Main()
    {
        string[] line = Console.ReadLine().Trim().Split(' ');
        var m = int.Parse(line[0]);
        var n = int.Parse(line[1]);
        var k = int.Parse(Console.ReadLine().Trim());
        var map = new int[m, n];
        var mapJ = new int[m, n];
        var mapO = new int[m, n];
        for (int i = 0; i < m; i++)
        {
            var s = Console.ReadLine().Trim();
            if (s[0] == 'J') mapJ[i, 0] = 1;
            else if (s[0] == 'O') mapO[i, 0] = 1;
            for (int j = 1; j < n; j++)
            {
                mapJ[i, j] = mapJ[i, j - 1];
                mapO[i, j] = mapO[i, j - 1];
                if (s[j] == 'J') mapJ[i, j]++;
                else if (s[j] == 'O') mapO[i, j]++;
            }
        }
        for (int i = 0; i < k; i++)
        {
            string[] line2 = Console.ReadLine().Trim().Split(' ');
            var a = int.Parse(line2[0]) - 1;
            var b = int.Parse(line2[1]) - 1;
            var c = int.Parse(line2[2]) - 1;
            var d = int.Parse(line2[3]) - 1;
            var cJ = 0; var cO = 0;
            var t = (c - a + 1) * (d - b + 1);
            for (int j = a; j <= c; j++)
                if (b - 1 >= 0)
                {
                    cJ += mapJ[j, d] - mapJ[j, b - 1];
                    cO += mapO[j, d] - mapO[j, b - 1];
                }
                else
                {
                    cJ += mapJ[j, d];
                    cO += mapO[j, d];
                }
            Console.WriteLine("{0} {1} {2}", cJ, cO, t - (cJ + cO));
        }
    }
}
