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 <iostream>
#include<string>
#include<stack>
using namespace std;
int n,m;
char t[2007][2007];
int wi[300][2007];
int ko[300][2007];
struct str
{
	int wk;
	int nr;
	char lit;
};
str szukajw(int kw)
{
str x;
	for(char i='A';i<='Z';i++)
	  for(int j=0;j<n;j++)
	  {
	  	if(wi[i][j]==kw)
	  	 {
	  	  wi[i][j]=0;
	  	  for(int it=0;it<m;it++)
	  	     ko[i][it]=max(0,--ko[i][it]);

	  	  x.wk='R';
	  	  x.nr=j;
	  	  x.lit=i;
	  	  return  x;
	  	 }
	  }
	x.wk='#';
	x.nr=-1;
	x.lit='#';
	return x;
}
stack<str>stos;
str x,y,z;
str szukajk(int kk)
{
		  	  str x;
	for(char i='A';i<='Z';i++)
	  for(int j=0;j<m;j++)
	  {
	  	if(ko[i][j]==kk)
	  	 {
	  	  ko[i][j]=0;
	  	  for(int it=0;it<n;it++)
	  	     wi[i][it]=max(0,--wi[i][it]);

	  	  x.wk='K';
	  	  x.nr=j;
	  	  x.lit=i;
	  	  return  x;
	  	 }
	  }
	x.wk='#';
	x.nr=-1;
	x.lit='#';
	return x;
}
int main() {
	cin>>n>>m;
	for(int i=0;i<m;i++)
	  for(int j=0;j<n;j++)
	    cin>>t[i][j];
	for(int i=0;i<m;i++)
	  for(int j=0;j<n;j++)
	  {
	  	wi[t[j][i]][j]++;
	  }
	for(int j=0;j<n;j++)
	  for(int i=0;i<m;i++)
	  {
	    ko[t[j][i]][i]++;
	  }
	int N=n;
	int M=m;

	while((N>0)&&(M>0))
	{
	    //cout<<"*";

		if(M>0)
		{
		 x=szukajw(M);
		 if(x.nr>-1)
         {
          stos.push(x);
          N--;
         }


		}


		if(N>0)
		{
			x=szukajk(N);
			if(x.nr>-1)
            {
            stos.push(x);
			M--;
            }

		}



	}
	cout<<n+m-M-N<<endl;
while(!stos.empty())
{
     z=stos.top();
     stos.pop();
     cout<<char(z.wk)<<" "<<z.nr+1<<" "<<z.lit<<endl;
}

	return 0;
}