#include<iostream>
#include<vector>
#include<algorithm>
#include<functional>
#include<queue>
#include<stack>
#include<set>
#include<climits>
#include<cstdlib>
#include<cmath>
#include<string>

using namespace std;

#define INF 1 << 29
#define LL long long int

int main(){
    cin.tie(0);
    ios::sync_with_stdio(false);

    LL n,k;
	cin >> n >> k;

	vector<LL> x(n);
	vector<LL> y(n);
	vector<char> c(n);

	for(int i = 0; i < n; i++){
		cin >> x[i] >> y[i];
		cin >> c[i];
	}

	vector<vector<LL>> imos(2*k+1,vector<LL>(2*k+1,0));
	LL const MOD = 2*k;

	for(int i = 0; i < n; i++){
		LL mx = x[i]%MOD;
		LL my = y[i]%MOD;
		if(c[i] == 'W'){
			LL tmpx = 0-mx;
			if(tmpx < 0){
				tmpx += 2*k;
			}
			LL tmpy = 0-my;
			if(tmpy < 0){
				tmpy += 2*k;
			}
			imos[tmpy][tmpx]++;
			if(tmpy + k > 2*k && tmpx + k > 2*k){
				imos[0][tmpx]++;
				imos[(tmpy+k)%MOD][tmpx]--;
				imos[tmpy][0]++;
				imos[tmpy][(tmpx+k)%MOD]--;
				imos[0][0]++;
				imos[0][(tmpx+k)%MOD]--;
				imos[(tmpy+k)%MOD][0]--;
				imos[(tmpy+k)%MOD][(tmpx+k)%MOD]++;
			}else if(tmpy + k > 2*k){
				imos[tmpy][tmpx+k]--;
				imos[0][tmpx]++;
				imos[0][tmpx+k]--;
				imos[(tmpy+k)%MOD][tmpx]--;
				imos[(tmpy+k)%MOD][tmpx+k]++;
			}else if(tmpx + k > 2*k){
				imos[tmpy+k][tmpx]--;
				imos[tmpy][0]++;
				imos[tmpy+k][0]--;
				imos[tmpy][(tmpx+k)%MOD]--;
				imos[tmpy+k][(tmpx+k)%MOD]++;
			}else{
				imos[tmpy+k][tmpx]--;
				imos[tmpy][tmpx+k]--;
				imos[tmpy+k][tmpx+k]++;
			}
			tmpx = k-mx;
			if(tmpx < 0){
				tmpx += 2*k;
			}
			tmpy = k-my;
			if(tmpy < 0){
				tmpy += 2*k;
			}
			imos[tmpy][tmpx]++;
			if(tmpy + k > 2*k && tmpx + k > 2*k){
				imos[0][tmpx]++;
				imos[(tmpy+k)%MOD][tmpx]--;
				imos[tmpy][0]++;
				imos[tmpy][(tmpx+k)%MOD]--;
				imos[0][0]++;
				imos[0][(tmpx+k)%MOD]--;
				imos[(tmpy+k)%MOD][0]--;
				imos[(tmpy+k)%MOD][(tmpx+k)%MOD]++;
			}else if(tmpy + k > 2*k){
				imos[tmpy][tmpx+k]--;
				imos[0][tmpx]++;
				imos[0][tmpx+k]--;
				imos[(tmpy+k)%MOD][tmpx]--;
				imos[(tmpy+k)%MOD][tmpx+k]++;
			}else if(tmpx + k > 2*k){
				imos[tmpy+k][tmpx]--;
				imos[tmpy][0]++;
				imos[tmpy+k][0]--;
				imos[tmpy][(tmpx+k)%MOD]--;
				imos[tmpy+k][(tmpx+k)%MOD]++;
			}else{
				imos[tmpy+k][tmpx]--;
				imos[tmpy][tmpx+k]--;
				imos[tmpy+k][tmpx+k]++;
			}
		}else{
			LL tmpx = 0-mx;
			if(tmpx < 0){
				tmpx += 2*k;
			}
			LL tmpy = k-my;
			if(tmpy < 0){
				tmpy += 2*k;
			}
			imos[tmpy][tmpx]++;
			if(tmpy + k > 2*k && tmpx + k > 2*k){
				imos[0][tmpx]++;
				imos[(tmpy+k)%MOD][tmpx]--;
				imos[tmpy][0]++;
				imos[tmpy][(tmpx+k)%MOD]--;
				imos[0][0]++;
				imos[0][(tmpx+k)%MOD]--;
				imos[(tmpy+k)%MOD][0]--;
				imos[(tmpy+k)%MOD][(tmpx+k)%MOD]++;
			}else if(tmpy + k > 2*k){
				imos[tmpy][tmpx+k]--;
				imos[0][tmpx]++;
				imos[0][tmpx+k]--;
				imos[(tmpy+k)%MOD][tmpx]--;
				imos[(tmpy+k)%MOD][tmpx+k]++;
			}else if(tmpx + k > 2*k){
				imos[tmpy+k][tmpx]--;
				imos[tmpy][0]++;
				imos[tmpy+k][0]--;
				imos[tmpy][(tmpx+k)%MOD]--;
				imos[tmpy+k][(tmpx+k)%MOD]++;
			}else{
				imos[tmpy+k][tmpx]--;
				imos[tmpy][tmpx+k]--;
				imos[tmpy+k][tmpx+k]++;
			}
			tmpx = k-mx;
			if(tmpx < 0){
				tmpx += 2*k;
			}
			tmpy = 0-my;
			if(tmpy < 0){
				tmpy += 2*k;
			}
			imos[tmpy][tmpx]++;
			if(tmpy + k > 2*k && tmpx + k > 2*k){
				imos[0][tmpx]++;
				imos[(tmpy+k)%MOD][tmpx]--;
				imos[tmpy][0]++;
				imos[tmpy][(tmpx+k)%MOD]--;
				imos[0][0]++;
				imos[0][(tmpx+k)%MOD]--;
				imos[(tmpy+k)%MOD][0]--;
				imos[(tmpy+k)%MOD][(tmpx+k)%MOD]++;
			}else if(tmpy + k > 2*k){
				imos[tmpy][tmpx+k]--;
				imos[0][tmpx]++;
				imos[0][tmpx+k]--;
				imos[(tmpy+k)%MOD][tmpx]--;
				imos[(tmpy+k)%MOD][tmpx+k]++;
			}else if(tmpx + k > 2*k){
				imos[tmpy+k][tmpx]--;
				imos[tmpy][0]++;
				imos[tmpy+k][0]--;
				imos[tmpy][(tmpx+k)%MOD]--;
				imos[tmpy+k][(tmpx+k)%MOD]++;
			}else{
				
				imos[tmpy+k][tmpx]--;
				imos[tmpy][tmpx+k]--;
				imos[tmpy+k][tmpx+k]++;
			}
		}
	}

	for(int i = 0; i < 2*k-1; i++){
		for(int j = 0; j < 2*k; j++){
			imos[i+1][j] += imos[i][j];
		}
	}

	for(int i = 0; i < 2*k-1; i++){
		for(int j = 0; j < 2*k; j++){
			imos[j][i+1] += imos[j][i];
		}
	}

	LL ans = 0;

	for(int i = 0; i < 2*k; i++){
		for(int j = 0; j < 2*k; j++){
			ans = max(imos[i][j],ans);
		}
	}

	cout << ans << endl;
    
    return 0;
}

Measured memory_bytes: 33280