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
#include <bits/stdc++.h>

using namespace std;
int A[2001][2001], R[2001][27], K[2001][27], a, b, k=1, x, y;
set <int> rz[2001];
set <int> ko[2001];
string q;
int od[4001][3];
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>a>>b;
    x=a;
    y=b;
    for(int i=0; i<a; ++i){
        cin>>q;
        for(int j=0; j<b; ++j){
            A[i][j]=(int)q[j] - 64;
            rz[i].insert(A[i][j]);
            ko[j].insert(A[i][j]);
            R[i][A[i][j]]++;
            K[j][A[i][j]]++;
        }
        if(rz[i].size()==1){
            x--;
            od[k][0]=82;
            od[k][1]=i+1;
            od[k][2]=*rz[i].begin();
            rz[i].clear();
            for(int j=0; j<b; ++j){
                K[j][od[k][2]]--;
                if(K[j][od[k][2]]==0){
                    ko[j].erase(od[k][2]);
                }
            }
            ++k;
        }
    }

    while( x>0 && y>0){
        for(int j=0; j<b; ++j){
            if(ko[j].size()==1){
                y--;
                od[k][0]=75;
                od[k][1]=j+1;
                od[k][2]=*ko[j].begin();
                ko[j].clear();
                for(int i=0; i<a; ++i){
                    R[i][od[k][2]]--;
                    if(R[i][od[k][2]]==0){
                        rz[i].erase(od[k][2]);
                    }
                }
                ++k;
            }
        }
        for(int i=0; i<a; ++i){
            if(rz[i].size()==1){
                x--;
                od[k][0]=82;
                od[k][1]=i+1;
                od[k][2]=*rz[i].begin();
                rz[i].clear();
                for(int j=0; j<b; ++j){
                    K[j][od[k][2]]--;
                    if(K[j][od[k][2]]==0){
                        ko[j].erase(od[k][2]);
                    }
                }
                ++k;
            }
        }
    }



    --k;
    cout<<k<<"\n";
    while(k){
        cout<<(char)od[k][0]<<" "<<od[k][1]<<" "<<(char)(64+od[k][2])<<"\n";
        --k;
    }

    return 0;
}