// Arup Guha
// 11/3/2018
// Solution to SER 2018 D1/D2 Problem: Rug

import java.util.*;
import java.io.*;

public class rug {
	
	public static int n;
	public static int s;
	public static int[][] carpet;
	
	public static void main(String[] args) throws Exception {
		
		BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer tok = new StringTokenizer(stdin.readLine());
		n = Integer.parseInt(tok.nextToken());
		s = Integer.parseInt(tok.nextToken());
		carpet = new int[n][n];
		
		// Fill board 1 = D, 0 = C
		for (int i=0; i<n; i++) {
			String tmp = stdin.readLine().trim();
			for (int j=0; j<n; j++)
				carpet[i][j] = tmp.charAt(j) == 'D' ? 1 : 0;
		}
		
		// cumfreqcol[i+1][j] stores sum of column j upto index i.
		int[][] cumfreqcol = new int[n+1][n];
		for (int i=1; i<=n; i++)
			for (int j=0; j<n; j++)
				cumfreqcol[i][j] = cumfreqcol[i-1][j] + carpet[i-1][j];
		
		
		// Will fill this.
		int[] freq = new int[s*s+1];
		
		// Top of rug is row i.
		for (int i=0; i+s<=n; i++) {
		
			// Add first s columns of height s.
			int cursum = 0;
			for (int j=0; j<s; j++)
				cursum += (cumfreqcol[i+s][j]-cumfreqcol[i][j]);
		
			// This is rug at (i,0).
			freq[cursum]++;
		
			// Slide over right side of rug.
			for (int j=s; j<n; j++) {
				cursum += (cumfreqcol[i+s][j]-cumfreqcol[i][j]);
				cursum -= (cumfreqcol[i+s][j-s]-cumfreqcol[i][j-s]);
				freq[cursum]++;
			}
		}
		
		// Output all non-zero frequencies.
		for (int i=0; i<=s*s; i++)
			if (freq[i] > 0)
				System.out.println(i+" "+freq[i]);	
	}
}
