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
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
#include <bits/stdc++.h>

using namespace std;

map <char, int> R[10000];
map <char, int> K[10000];

string s[10000];

vector <pair<pair<char, int>, char> > result;

int main(){
	std::ios_base::sync_with_stdio(false);
	std::cout.tie(nullptr);
	std::cin.tie(nullptr);
	
	int n, m;
	bool spr;
	
	cin >> n >> m;
	for(int i = 0; i < n; ++i){
		cin >> s[i];
		for(int j = 0; j < m; ++j){
			R[i][s[i][j]]++;
			K[j][s[i][j]]++;
		}
	}
	
	spr = true;
	while(spr){
		
		// cout<<"R:\n";
		// for(int i=0;i<n;++i){
			// cout<<i<<": ";
			// for(auto j = R[i].begin(); j != R[i].end(); ++j){
				// cout << j->first << ' ' << j->second << " | ";
			// }
			// cout << '\n';
		// }
		// cout<<"K:\n";
		// for(int i=0;i<m;++i){
			// cout<<i<<": ";
			// for(auto j = K[i].begin(); j != K[i].end(); ++j){
				// cout << j->first << ' ' << j->second << " | ";
			// }
			// cout << '\n';
		// }
		// cout<<'\n';
		// if(rand()%100 == 0){
			// return 0;
		// }
		
		for(int i = 0; i < n; ++i){
			if(R[i].size() == 1){
				result.push_back({{'R', i + 1}, R[i].begin()->first});
				for(int j = 0; j < m; ++j){
					if(K[j].count(R[i].begin()->first) == 1){
						K[j][R[i].begin()->first]--;
						if(K[j][R[i].begin()->first] == 0){
							K[j].erase(R[i].begin()->first);
						}
					}
				}
				R[i].clear();
			}
		}
		
		for(int i = 0; i < m; ++i){
			if(K[i].size() == 1){
				result.push_back({{'K', i + 1}, K[i].begin()->first});
				for(int j = 0; j < n; ++j){
					if(R[j].count(K[i].begin()->first) == 1){
						R[j][K[i].begin()->first]--;
						if(R[j][K[i].begin()->first] == 0){
							R[j].erase(K[i].begin()->first);
						}
					}
				}
				K[i].clear();
			}
		}
		
		
		
		spr = false;
		for(int i = 0; i < n; ++i){
			if(!R[i].empty()){
				spr = true;
				break;
			}
		}
		for(int i = 0; i < m; ++i){
			if(!K[i].empty()){
				spr = true;
				break;
			}
		}
		
	}
	
	cout << result.size() << '\n';
	
	for(int i = result.size() - 1; i >=0; --i){
		cout << result[i].first.first << ' ' << result[i].first.second << ' ' << result[i].second << '\n';
	}
	
	return 0;
}