#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>

using std::cin;
using std::cout;
using std::endl;

using std::string;
using std::pair;

using std::vector;
using std::sort;

vector<vector<int>> b;
vector<vector<int>> w;

int eval_b(int x1,int y1,int x2,int y2){
    if(x2-x1==0||y2-y1==0){
        return 0;
    }
    if(x1<0){
        if(y1<0){
            return b[x2][y2];
        }
        else{
            return b[x2][y2]-b[x2][y1];
        }
    }
    else{
        if(y1<0){
            return b[x2][y2]-b[x1][y2];
        }
        else{
            return b[x2][y2]-b[x2][y1]-b[x1][y2]+b[x1][y1];
        }
    }
}

int eval_w(int x1,int y1,int x2,int y2){
    if(x2-x1==0||y2-y1==0){
        return 0;
    }
    if(x1<0){
        if(y1<0){
            return w[x2][y2];
        }
        else{
            return w[x2][y2]-w[x2][y1];
        }
    }
    else{
        if(y1<0){
            return w[x2][y2]-w[x1][y2];
        }
        else{
            return w[x2][y2]-w[x2][y1]-w[x1][y2]+w[x1][y1];
        }
    }
}

int main(){
    int N;
    int K;
    cin >> N >> K;
    int K2=K*2;

    b=vector<vector<int>>(K2,vector<int>(K2,0));
    w=vector<vector<int>>(K2,vector<int>(K2,0));

    for(int i=0;i<N;i++){
        int x,y;
        char c;
        cin >> x;
        cin >> y;
        cin >> c;
        x %= K2;
        y %= K2;
        if(c == 'B'){
            b[x][y]++;
        }
        else{
            w[x][y]++;
        }
    }

    for(int i=1;i<K2;i++){
        b[0][i]+=b[0][i-1];
        w[0][i]+=w[0][i-1];
        b[i][0]+=b[i-1][0];
        w[i][0]+=w[i-1][0];
    }

    for(int i=1;i<K2;i++){
        for(int j=1;j<K2;j++){
            b[i][j]=b[i][j]+b[i-1][j]+b[i][j-1]-b[i-1][j-1];
            w[i][j]=w[i][j]+w[i-1][j]+w[i][j-1]-w[i-1][j-1];
        }
    }

    int ans=0;

    for(int i=0;i<K2;i++){
        for(int j=0;j<K2;j++){
            int x1=i;
            int x2=(i+K)%(K2);
            int y1=j;
            int y2=(j+K)%(K2);

            int eval=0;

            if((x2-x1)*(y2-y1)>0){
                if(x2<x1){
                    int x=x1; x1=x2; x2=x;
                    int y=y1; y1=y2; y2=y;
                }
                eval+=eval_b(-1,-1,x1,y1);
                eval+=eval_b(-1,y2,x1,K2-1);
                eval+=eval_b(x1,y1,x2,y2);
                eval+=eval_b(x2,-1,K2-1,y1);
                eval+=eval_b(x2,y2,K2-1,K2-1);

                eval+=eval_w(-1,y1,x1,y2);
                eval+=eval_w(x1,-1,x2,y1);
                eval+=eval_w(x1,y2,x2,K2-1);
                eval+=eval_w(x2,y1,K2-1,y2);
            }
            else{
                if(x2<x1){
                    int x=x1; x1=x2; x2=x;
                }
                else{
                    int y=y1; y1=y2; y2=y;
                }
                eval+=eval_w(-1,-1,x1,y1);
                eval+=eval_w(-1,y2,x1,K2-1);
                eval+=eval_w(x1,y1,x2,y2);
                eval+=eval_w(x2,-1,K2-1,y1);
                eval+=eval_w(x2,y2,K2-1,K2-1);

                eval+=eval_b(-1,y1,x1,y2);
                eval+=eval_b(x1,-1,x2,y1);
                eval+=eval_b(x1,y2,x2,K2-1);
                eval+=eval_b(x2,y1,K2-1,y2);
            }

            ans=std::max(ans,eval);
        }
    }

    cout << ans << endl;

    return 0;
}



Measured memory_bytes: 31744