// Slower C++ solution:
#include <bits/stdc++.h>

#include <math.h>

using namespace std;

#pragma GCC optimize("Ofast,unroll-loops,no-stack-protector")

typedef long double ld;

typedef long long ll;



struct Point {

    ll x, y, x1 = 0, y1 = 0;

    

    Point() {}

    

    Point(ll _x, ll _y, char c) {

        x = _x;

        y = _y;

        if (c == 'U') {

            y1 = 1;

        } else if (c == 'D') {

            y1 = -1;

        } else if (c == 'R') {

            x1 = 1;

        } else {

            x1 = -1;

        }

    }

};



vector<Point> vc;



ld dist(ld t) {

    ld max_x = -1e9, max_y = -1e9, min_x = 1e9, min_y = 1e9;

    for (auto p : vc) {

        ld xx = p.x + p.x1 * t;

        ld yy = p.y + p.y1 * t;

        max_x = max(max_x, xx);

        max_y = max(max_y, yy);

        min_x = min(min_x, xx);

        min_y = min(min_y, yy);

    }

    return (max_x - min_x) * (max_y - min_y);

}



int main() {

#ifdef LOCAL

    freopen("in", "r", stdin);

    freopen("out", "w", stdout);

#endif

    ios_base::sync_with_stdio(false);

    cin.tie(NULL);

    cout.precision(20);

    int n;

    cin >> n;

    for (int i = 0; i < n; ++i) {

        ll x, y;

        char c;

        cin >> x >> y >> c;

        vc.push_back(Point(x, y, c));

    }

    ld l = 0, r = 1e11;

    for (int i = 0; i < 700; ++i) {

        ld m1 = (r - l) / 3 + l;

        ld m2 = r - (r - l) / 3;

        ld a1 = dist(m1);

        ld a2 = dist(m2);

        if (a1 > a2) {

            l = m1;

        } else {

            r = m2;

        }

    }

    cout << fixed << min(dist(l), dist(r));

    return 0;

}


// Faster C++ solution for the same problem (measured speedup: 4.821840785193041x):
//pragma

//#pragma GCC optimize("Ofast")

//#pragma GCC optimize("unroll-loops")



#include <bits/stdc++.h>



#define YOU using

#define DONT namespace

#define SAY std



YOU DONT SAY;



typedef long long ll;

typedef unsigned long long ull;

typedef pair<int,int> pii;

typedef pair<ll,ll> pll;

typedef pair<ll,int> pli;

typedef pair<int,ll> pil;

typedef vector<int> vi;

typedef vector<pii> vii;

typedef vector<pll> vll;



#define REPP(i,a,b,d) for(int i=a;i<=b;i+=d)

#define REP(i,a,b) REPP(i,a,b,1)

#define REVV(i,a,b,d) for(int i=a;i>=b;i-=d)

#define REV(i,a,b) REVV(i,a,b,1)



#define FOR(i,a) for(int i=0; i<a; i++)

#define FORD(i,a) for(int i=(int)a-1; i>=0; i--)



#define pb push_back

#define F first

#define S second



const int OO = 1e9;

const ll INF = 1e18;



const int irand(int lo,int hi){

	return ((double)rand()/(RAND_MAX + 1.0)) * (hi-lo+1) + lo;

}



const ll lrand(ll lo,ll hi){

	return ((double)rand()/(RAND_MAX + 1.0)) * (hi-lo+1) + lo;

}



#define getc getchar

template<typename T>

T getnum(){

	int sign = 1;

	T ret = 0;

	char c;



	do{

		c = getc();

	}while(c == ' ' || c == '\n');

	if(c == '-')sign = -1;

	else ret = c-'0';

	while(1){

		c = getc();

		if(c < '0' || c > '9')break;

		ret = 10*ret + c-'0';

	}

	return sign * ret;

}



inline void ini(int& x){

	x = getnum<int>();

}



inline void scani(int& x){

	scanf("%d",&x);

}



//end of macro



const int N = 1e5 + 5;



const int cx[] = {1,0,-1,0};

const int cy[] = {0,1,0,-1};



int n;

int x[N], y[N];

int dir[N];



int dirconv(char c){

    if(c == 'R')return 0;

    else if(c == 'U')return 1;

    else if(c == 'L')return 2;

    else if(c == 'D')return 3;

    return -1;

}



ll cekx(ll t){

    ll mn = INF, mx = -INF;

    REP(i,1,n){

        ll xx = x[i] + t * cx[dir[i]];

        mn = min(mn, xx);

        mx = max(mx, xx);

    }

    return mx - mn;

}



ll ceky(ll t){

    ll mn = INF, mx = -INF;

    REP(i,1,n){

        ll yy = y[i] + t * cy[dir[i]];

        mn = min(mn, yy);

        mx = max(mx, yy);

    }

    return mx - mn;

}



ll ceka(ll t){

    return cekx(t) * ceky(t);

}



ll ternary_x(){

    ll lo = 0, hi = 1e9;

    ll ret = -1, ans = INF;

    while(hi - lo >= 5){

        ll mid1 = (lo + lo + hi)/3;

        ll mid2 = (lo + hi + hi)/3;

        ll v1 = cekx(mid1);

        ll v2 = cekx(mid2);

        if(v1 < v2){

            if(v1 < ans)ans = v1, ret = mid1;

            hi = mid2-1;

        }else{

            if(v2 < ans)ans = v2, ret = mid2;

            lo = mid1+1;

        }

    }

    REP(i,lo,hi){

        ll v = cekx(i);

        if(v < ans)ans = v, ret = i;

    }

    return ret;

}



ll ternary_y(){

    ll lo = 0, hi = 1e9;

    ll ret = -1, ans = INF;

    while(hi - lo >= 5){

        ll mid1 = (lo + lo + hi)/3;

        ll mid2 = (lo + hi + hi)/3;

        ll v1 = ceky(mid1);

        ll v2 = ceky(mid2);

        if(v1 < v2){

            if(v1 < ans)ans = v1, ret = mid1;

            hi = mid2-1;

        }else{

            if(v2 < ans)ans = v2, ret = mid2;

            lo = mid1+1;

        }

    }

    REP(i,lo,hi){

        ll v = ceky(i);

        if(v < ans)ans = v, ret = i;

    }

    return ret;

}



ll ternary(){

    ll lo = 0, hi = 1e9;

    ll ret = -1, ans = INF;

    while(hi - lo >= 5){

        ll mid1 = (lo + lo + hi)/3;

        ll mid2 = (lo + hi + hi)/3;

        ll v1 = ceka(mid1);

        ll v2 = ceka(mid2);

        if(v1 < v2){

            if(v1 < ans)ans = v1, ret = mid1;

            hi = mid2-1;

        }else{

            if(v2 < ans)ans = v2, ret = mid2;

            lo = mid1+1;

        }

    }

    REP(i,lo,hi){

        ll v = ceka(i);

        if(v < ans)ans = v, ret = i;

    }

    return ret;

}



int main(){

    ios_base::sync_with_stdio(0);

    cin.tie(0);

    cout.tie(0);

    #define endl '\n'

    cout.setf(ios::fixed);

    cout.setf(ios::showpoint);

    cout.precision(10);

    

    cin>>n;

    REP(i,1,n){

        char c;

        cin>>x[i]>>y[i]>>c;

        dir[i] = dirconv(c);

        x[i] *= 2;

        y[i] *= 2;

    }

    

    ll px = ternary_x();

    ll py = ternary_y();

    

    ll ans = min(ceka(px), ceka(py));

    ans = min(ans, ceka(ternary()));

    

    cout << ans/4;

    if(ans % 4){

        cout << "." << (ans % 4) * 25;

    }

    cout << endl;

    

    return 0;

}