1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include<iostream> 
#include<algorithm>
#include<vector>
#include<cmath>
#include<ctime>
#include<cstring>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	int N,M;
	string S[2000];
	cin>>N>>M;
	for(int i=0; i<N; ++i) {
		cin>>S[i];
	}
	int H[2000][26],W[2000][26];
	for(int i=0; i<2000; ++i) for(int j=0; j<26; ++j) H[i][j] = W[i][j] = 0;
	for(int i=0; i<N; ++i)
	for(int j=0; j<M; ++j) {
		H[i][int(S[i][j]-'A')]++;
		W[j][int(S[i][j]-'A')]++;
	}
	char c[4000];
	int L[4000];
	char z[4000];
	int T = 0;
	for(int x=0; x<M*N;) {
	for(int i=0; i<N; ++i) {
		int k=0;
		for(int l=0; l<26; ++l) if(H[i][l] != 0) {
			k++;
			z[T] = char(l)+'A';
		}
		if(k == 1) {
			c[T] = 'R';
			L[T] = i + 1;
			T++;
			for(int j=0; j<M; ++j) if(S[i][j] != '.') {
				H[i][int(S[i][j]-'A')]--;
				W[j][int(S[i][j]-'A')]--;
				S[i][j] = '.';
				x++;
			}
		}
	}
	for(int i=0; i<M; ++i) {
		int k=0;
		for(int l=0; l<26; ++l) if(W[i][l] != 0) {
			k++;
			z[T] = char(l)+'A';
		}
		if(k == 1) {
			c[T] = 'K';
			L[T] = i + 1;
			T++;
			for(int j=0; j<N; ++j) if(S[j][i] != '.') {
				H[j][int(S[j][i]-'A')]--;
				W[i][int(S[j][i]-'A')]--;
				S[j][i] = '.';
				x++;
			}
		}
	}
	}
	cout<<T<<endl;
	for(int i=T; i>=1; --i) cout<<c[i-1]<<" "<<L[i-1]<<" "<<z[i-1]<<endl;
	return 0;
}