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
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <bits/stdc++.h>

using namespace std;

int wys[5000][26];
int kol[5000];

queue <pair<int,char> > p;
stack <pair<int,char> > odp;

int main(){
	
	int n,m,a,b,x;
	char zn;
	
	cin>>n>>m;
	char T[n+1][m+1];
	
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			cin>>T[i][j];
			wys[i][ T[i][j]-'A' ]++;
			if(wys[i][ T[i][j]-'A' ]==1) kol[i]++;
			
			wys[n+j][ T[i][j]-'A' ]++;
			if(wys[n+j][ T[i][j]-'A' ]==1) kol[n+j]++;
		}
	}
	/*
	for(int i=1;i<=n;i++){
		cout<<kol[i]<<" ";
	}
	cout<<endl;
	for(int i=n+1;i<=n+m;i++){
		cout<<kol[i]<<" ";
	}
	cout<<endl;
	*/
	for(int i=1;i<=n+m;i++){
		if(kol[i]==1){
			for(int j=0;j<26;j++){
				if(wys[i][j]!=0){
					a = j;
					break;
				}
			}
			zn = a +'A';
			p.push(make_pair(i,zn));
		}
	}
	while(p.size()>0){
		a = p.front().first;
		zn = p.front().second;
		p.pop();
		odp.push(make_pair(a,zn));
		/*
		cout<<a<<" "<<zn<<endl;
		for(int k=1;k<=n+m;k++){
			cout<<kol[k]<<" ";
		}
		cout<<endl<<"*"<<endl;
		for(int k=0;k<26;k++){
			for(int l=1;l<=n+m;l++){
				cout<<wys[l][k]<<" ";
			}
			cout<<endl;
		}
		cout<<"---"<<endl;
		*/
		for(int i=0;i<26;i++){
			wys[a][i] = 0;
		}
		kol[a] = 0;
		if(a<=n){
			for(int i=1;i<=m;i++){
				wys[n+i][ T[a][i]-'A' ]--;
				if(wys[n+i][ T[a][i]-'A' ] == 0){
					kol[n+i]--;
					if(kol[n+i]==1){
						for(int j=0;j<26;j++){
							if(wys[n+i][j]!=0){
								b = j;
								break;
							}
						}
						zn = b +'A';
						p.push(make_pair(i+n,zn));
					}
				}
			}
		}else{
			for(int i=1;i<=n;i++){
				wys[i][ T[i][a-n]-'A' ]--;
				if(wys[i][ T[i][a-n]-'A' ] == 0){
					kol[i]--;
					if(kol[i]==1){
						for(int j=0;j<26;j++){
							if(wys[i][j]!=0){
								b = j;
								break;
							}
						}
						zn = b +'A';
						p.push(make_pair(i,zn));
					}
				}
			}
		}
	}
	
	cout<<odp.size()<<endl;
	while(odp.size()>0){
		if(odp.top().first <= n){
			cout<<"R "<<odp.top().first<<" "<<odp.top().second<<endl;
		}else{
			cout<<"K "<<odp.top().first-n<<" "<<odp.top().second<<endl;
		}
		odp.pop();
	}
	
}