#include <bits/stdc++.h>

#define db(x) cerr << #x ": " << (x) << '\n';

#define int long long

using namespace std;

typedef long long ll;

typedef long double ld;

const int oo = 1e18;

const ld EPS = 1e12;

struct point
{
    ld x, y;
    char d;
};

int N;

vector<point> vect;

ld f(ld m)
{
    ld x1 = oo, y1 = oo, x2 = -oo, y2 = -oo;
    for(int i = 0 ; i < vect.size() ; i++)
    {
        ld x = vect[i].x;
        ld y = vect[i].y;
        char d = vect[i].d;
        if(d == 'U')
        {
            x1 = min(x1,x);
            x2 = max(x2,x);
            y1 = min(y1,y+m);
            y2 = max(y2,y+m);
        }
        if(d == 'R')
        {
            x1 = min(x1,x+m);
            x2 = max(x2,x+m);
            y1 = min(y1,y);
            y2 = max(y2,y);
        }
        if(d == 'D')
        {
            x1 = min(x1,x);
            x2 = max(x2,x);
            y1 = min(y1,y-m);
            y2 = max(y2,y-m);
        }
        if(d == 'L')
        {
            x1 = min(x1,x-m);
            x2 = max(x2,x-m);
            y1 = min(y1,y);
            y2 = max(y2,y);
        }
    }
    return (x2-x1)*(y2-y1);
}

ld ts(ld a, ld b)
{
    for(int i = 0 ; i < 100 ; i++)
    {
        ld m1 = (2.0*a+b)/3.0;
        ld m2 = (a+2.0*b)/3.0;
        if(f(m1) > f(m2))
        {
            a = m1;
        }
        else
        {
            b = m2;
        }
    }
    return f(a);
}

int32_t main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin >> N;

    for(int i = 0 ; i < N ; i++)
    {
        ld x, y;
        char d;
        cin >> x >> y >> d;
        vect.push_back({x,y,d});
    }

    cout << setprecision(12) << fixed;

    cout << ts(0.0,1e9) << '\n';


    return 0;
}
