#include <bits/stdc++.h>
using namespace std;
#define REP(i, n) for (int i = 0; i < n; i++)
#define KMAX (1000)
int s[KMAX + 1][2 * KMAX + 1];
int main(void) {
    ios::sync_with_stdio(false);
    cin.tie(0);
    char c;
    int n, k, x, y;
    cin >> n >> k;
    REP(i, n) {
        cin >> x >> y >> c;
        if (c == 'W') {
            y += k;
        }
        y %= 2 * k;
        if (y >= k) {
            y -= k;
            x += k;
        }
        x %= 2 * k;
        s[y + 1][x + 1]++;
    }
    // 二次元累積和
    REP(y, k) REP(x, 2 * k) {
        s[y + 1][x + 1] += s[y][x + 1] + s[y + 1][x] - s[y][x];
    }
    int max = 0;
    REP(y, k) {
        int u = s[y][2 * k] - s[y][0] - s[0][2 * k];
        REP(x, k) {
            int t = u - s[0][x] - s[k][x] + s[0][x + k] + s[k][x + k] +
                    2 * s[y][x] - 2 * s[y][x + k];
            t = t < n / 2 ? n - t : t;
            max = t > max ? t : max;
        }
    }
    cout << max << endl;
    return 0;
}
