#include <bits/stdc++.h>
#define FASTIO
using namespace std;

using ll = long long;
using Vi = vector<int>;
using Vl = vector<ll>;
using Pii = pair<int, int>;
using Pll = pair<ll, ll>;

constexpr int I_INF = numeric_limits<int>::max();
constexpr ll L_INF = numeric_limits<ll>::max();

//==================================

int main() {
#ifdef FASTIO
    cin.tie(0), cout.tie(0);
    ios::sync_with_stdio(false);
#endif
#ifdef FILEINPUT
    ifstream ifs("./in_out/input.txt");
    cin.rdbuf(ifs.rdbuf());
#endif

    ll N, K;
    cin >> N >> K;
    vector<Pii> kibou(N);
    for (ll i = 0; i < N; i++) {
        int x, y;
        char c;
        cin >> x >> y >> c;
        if (c == 'B') {
            x += K;
        }
        x %= 2 * K;
        y %= 2 * K;
        kibou[i] = make_pair(x, y);
    }

    vector<Vl> imos(2 * K + 1, Vl(2 * K + 1));
    for (ll i = 0; i < N; i++) {
        int x, y;
        tie(x, y) = kibou[i];
        ll lx1, ux1, ly1, uy1;
        lx1 = (-x + 2 * K) % (2 * K);
        ux1 = (K - x + 2 * K) % (2 * K);
        ly1 = (-y + 2 * K) % (2 * K);
        uy1 = (K - y + 2 * K) % (2 * K);

        if (lx1 > ux1 && ly1 > uy1) {
            ++imos[lx1][ly1];
            --imos[lx1][2 * K];
            --imos[2 * K][ly1];
            ++imos[2 * K][2 * K];

            ++imos[0][0];
            --imos[0][uy1];
            --imos[ux1][0];
            ++imos[ux1][uy1];

            ++imos[0][ly1];
            --imos[0][2 * K];
            --imos[ux1][ly1];
            ++imos[ux1][2 * K];

            ++imos[lx1][0];
            --imos[lx1][uy1];
            --imos[2 * K][0];
            ++imos[2 * K][uy1];
        }
        else if (lx1 > ux1) {
            ++imos[lx1][ly1];
            --imos[lx1][uy1];
            --imos[2 * K][ly1];
            ++imos[2 * K][uy1];

            ++imos[0][ly1];
            --imos[0][uy1];
            --imos[ux1][ly1];
            ++imos[ux1][uy1];
        }
        else if (ly1 > uy1) {
            ++imos[lx1][ly1];
            --imos[lx1][2 * K];
            --imos[ux1][ly1];
            ++imos[ux1][2 * K];

            ++imos[lx1][0];
            --imos[lx1][uy1];
            --imos[ux1][0];
            ++imos[ux1][uy1];
        }
        else {
            ++imos[lx1][ly1];
            --imos[lx1][uy1];
            --imos[ux1][ly1];
            ++imos[ux1][uy1];
        }

        lx1 = (K - x + 2 * K) % (2 * K);
        ux1 = (-x + 2 * K) % (2 * K);
        ly1 = (K - y + 2 * K) % (2 * K);
        uy1 = (-y + 2 * K) % (2 * K);

        if (lx1 > ux1 && ly1 > uy1) {
            ++imos[lx1][ly1];
            --imos[lx1][2 * K];
            --imos[2 * K][ly1];
            ++imos[2 * K][2 * K];

            ++imos[0][0];
            --imos[0][uy1];
            --imos[ux1][0];
            ++imos[ux1][uy1];

            ++imos[0][ly1];
            --imos[0][2 * K];
            --imos[ux1][ly1];
            ++imos[ux1][2 * K];

            ++imos[lx1][0];
            --imos[lx1][uy1];
            --imos[2 * K][0];
            ++imos[2 * K][uy1];
        }
        else if (lx1 > ux1) {
            ++imos[lx1][ly1];
            --imos[lx1][uy1];
            --imos[2 * K][ly1];
            ++imos[2 * K][uy1];

            ++imos[0][ly1];
            --imos[0][uy1];
            --imos[ux1][ly1];
            ++imos[ux1][uy1];
        }
        else if (ly1 > uy1) {
            ++imos[lx1][ly1];
            --imos[lx1][2 * K];
            --imos[ux1][ly1];
            ++imos[ux1][2 * K];

            ++imos[lx1][0];
            --imos[lx1][uy1];
            --imos[ux1][0];
            ++imos[ux1][uy1];
        }
        else {
            ++imos[lx1][ly1];
            --imos[lx1][uy1];
            --imos[ux1][ly1];
            ++imos[ux1][uy1];
        }
    }

    for (ll i = 0; i < 2 * K; i++) {
        for (ll j = 0; j <= 2 * K; j++) {
            imos[i + 1][j] += imos[i][j];
        }
    }
    for (ll i = 0; i <= 2 * K; i++) {
        for (ll j = 0; j < 2 * K; j++) {
            imos[i][j + 1] += imos[i][j];
        }
    }

    // for (ll i = 0; i < 2 * K + 1; i++) {
    //     for (ll j = 0; j < 2 * K + 1; j++) {
    //         cout << imos[i][j] << " ";
    //     }
    //     cout << "\n";
    // }
    // cout << "\n";

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

    cout << ans << "\n";

    return 0;
}

Measured memory_bytes: 32384