#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 501;
int v[N][N];
ll s[N][N][N];
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
int n, m, k;
cin >> n >> m >> k;
ll y = 0, p = 1e18;
for(int i = 1; i <= k; i++){
int a, b;
char c;
cin >> a >> b >> c;
bool h = (c == 'H');
v[a][b] = (h ? 1 : -10);
y += v[a][b];
}
// kärki alas
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
s[i][j][1] = v[i][j];
p = min(p, v[i][j]);
if(i % 2 == 0){
// etäisyys vasemmalta = j * 2
// etäisyys oikealta = (m-j) * 2 + 1
// etäisyys ylhäältä = i
// suurin kolmio = min()
int d = min(min(j * 2, (m-j) * 2 + 1), i);
for(int t = 2; t <= d; t++){
ll u = v[i][j];
u += s[i-1][j][t-1] + s[i-1][j+1][t-1] - s[i-2][j][t-2];
p = min(p, u);
s[i][j][t] = u;
}
}
else{
// etäisyys vasemmalta = (j-1) * 2 + 1
// etäisyys oikealta = (m-j+1) * 2
// etäisyys ylhäältä = i
// suurin kolmio = min()
int d = min(min((j-1) * 2 + 1, (m-j+1) * 2), i);
for(int t = 2; t <= d; t++){
ll u = v[i][j];
u += s[i-1][j][t-1] + s[i-1][j-1][t-1] - s[i-2][j][t-2];
p = min(p, u);
s[i][j][t] = u;
}
}
}
}
// kärki ylös
for(int i = n; i >= 1; i--){
for(int j = m; j >= 1; j--){
s[i][j][1] = v[i][j];
p = min(p, v[i][j]);
if(i % 2 == 0){
// etäisyys vasemmalta = j * 2
// etäisyys oikealta = (m-j) * 2 + 1
// etäisyys alhaalta = n-i+1
// suurin kolmio = min()
int d = min(min(j * 2, (m-j) * 2 + 1), n-i+1);
for(int t = 2; t <= d; t++){
ll u = v[i][j];
u += s[i+1][j][t-1] + s[i+1][j+1][t-1] - s[i+2][j][t-2];
p = min(p, u);
s[i][j][t] = u;
}
}
else{
// etäisyys vasemmalta = (j-1) * 2 + 1
// etäisyys oikealta = (m-j+1) * 2
// etäisyys alhaalta = n-i+1
// suurin kolmio = min()
int d = min(min((j-1) * 2 + 1, (m-j+1) * 2), n-i+1);
for(int t = 2; t <= d; t++){
ll u = v[i][j];
u += s[i+1][j][t-1] + s[i+1][j-1][t-1] - s[i+2][j][t-2];
p = min(p, u);
s[i][j][t] = u;
}
}
}
}
cout << y-p;
}