//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;
}

Measured memory_bytes: 1408