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

using namespace std;
queue<pair<int,int>> kol; //1-kolumna 2-rzad
int l_r[2010][30];
int l_k[2010][30];
int ile_k[2010];
int ile_r[2010];
char x;
char tab[2010][2010];
int t;
vector<pair<int,pair<int,int>>> wyn;
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>tab[i][j];
            t=tab[i][j]-65;
            if(l_r[i][t]==0){
                ile_r[i]++;
            }
            l_r[i][t]++;
            if(l_k[j][t]==0){
                ile_k[j]++;
            }
            l_k[j][t]++;

        }
    }
    for(int i=1;i<=n;i++){
        if(ile_r[i]==1){
            kol.push({i,2});
            wyn.push_back({2,{i,tab[i][1]-65}});
            ile_r[i]=0;
        }
    }
     for(int i=1;i<=m;i++){
        if(ile_k[i]==1){
            kol.push({i,1});
            wyn.push_back({1,{i,tab[1][i]-65}});
            ile_k[i]=0;

        }
    }
    pair<int,int> k;
    while(!kol.empty()){
            k=kol.front();
            kol.pop();
            if(k.second==1){
                    for(int j=0;j<=25;j++){
                                if(l_k[k.first][j]>0){
                                    x=char(j+65);
                                    break;
                                }
                            }
                t=x-65;
                for(int i=1;i<=n;i++){
                    l_r[i][t]--;
                    if(l_r[i][t]==0){
                        ile_r[i]--;
                        if(ile_r[i]==1){
                            kol.push({i,2});
                            for(int j=0;j<=25;j++){
                                if(l_r[i][j]>=1){
                                    x=char(j+65);
                                    break;
                                }
                            }
                            wyn.push_back({2,{i,x-65}});
                            ile_r[i]=0;
                        }
                    }
                }
            }
            if(k.second==2){
                for(int j=0;j<=25;j++){
                                if(l_r[k.first][j]>=1){
                                    x=char(j+65);
                                    break;
                                }
                            }
                t=x-65;
                for(int i=1;i<=m;i++){
                    l_k[i][t]--;
                    if(l_k[i][t]==0){
                        ile_k[i]--;
                        if(ile_k[i]==1){
                            kol.push({i,1});
                             for(int j=0;j<=25;j++){
                                if(l_k[i][j]>0){
                                    x=char(j+65);
                                    break;
                                }
                            }
                            wyn.push_back({1,{i,x-65}});
                            ile_k[i]=0;
                        }
                    }
                }

            }


    }
    cout<<wyn.size()<<endl;
    for(int i=wyn.size()-1;i>=0;i--){
        if(wyn[i].first==1){
            cout<<"K"<<" ";
        }
        if(wyn[i].first==2){
            cout<<"R"<<" ";
        }
        cout<<wyn[i].second.first<<" ";
        cout<<char(wyn[i].second.second+65)<<endl;
    }

    return 0;
}