#include <bits/stdc++.h>
using namespace std;
#define REP(i, n) for(int i = 0;i < n;i++)
#define REPR(i, n) for(int i = n;i >= 0;i--)
#define FOR(i, m, n) for(int i = m;i < n;i++)
#define fi first
#define se second
#define mp make_pair
#define itrfor(itr,A) for(auto itr = A.begin(); itr !=A.end();itr++)
template <class T> using reversed_priority_queue = priority_queue<T, vector<T>, greater<T> >;
typedef long long llong;
char moji[26]={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
char moji2[26]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
char moji3[10]={'0','1','2','3','4','5','6','7','8','9'};
#define Sort(a) sort(a.begin(),a.end());
#define Reverse(a) reverse(a.begin(),a.end());
#define print(a) cout << a << endl;
#define MOD llong(1e9+7)
#define MAX int(2 * 1e5 +5)
#define debug(x)  cout << #x << " = " << (x) << endl;
#define pi acos(-1.0)
#define int llong
#define INF llong(1e18 + 3)
template<class T> bool chmax(T &a,  T b) {if(a<b){a=b; return 1;} return 0;}
template<class T> bool chmin(T &a,  T b) {if(a>b){a=b; return 1;} return 0;}
bool Add(int &a,int b){a = (a + b) % MOD;}
void myprint(int* A,int A_num){
   REP(i,A_num) cout << A[i] << " ";
   cout << endl;
}


struct ma{
    double r = - INF,m = - INF,l = - INF;
};

struct mi{
    double r = INF,m = INF,l = INF;
};

double q_ma(ma M,double t){
    double res = - INF;
    res = max(res,M.r -  t);
    res = max(res,M.m);
    res = max(res,M.l +  t);
    return res;
}

double q_mi(mi M, double t){
    double res = M.l +t;
    res = min(res,M.m);
    res = min(res, M.r -  t);
    return res;
}

ma xma,yma;
mi xmi,ymi;

double menseki(double t){
    if(t > int(1e9) or  t< 0){
        return INF;
    }
    return (q_ma(xma,t) - q_mi(xmi,t) ) * ( q_ma(yma,t) - q_mi(ymi,t));
}


signed main(){
    int n;
    cin >> n;

    REP(i,n){
        double x,y;
        string s;
        cin >> x >> y >> s;
        if(s[0] == 'R'){
            chmax(xma.l, x);
            chmin(xmi.l,x);
            chmax(yma.m,y);
            chmin(ymi.m , y);

        }
        else if(s[0] == 'L'){
            chmax(xma.r, x);
            chmin(xmi.r,x);
            chmax(yma.m,y);
            chmin(ymi.m , y);

        }
        else if(s[0] == 'U'){
            chmax(xma.m, x);
            chmin(xmi.m,x);
            chmax(yma.l,y);
            chmin(ymi.l , y);
        }
        else if(s[0] == 'D'){
            chmax(xma.m, x);
            chmin(xmi.m,x);
            chmax(yma.r,y);
            chmin(ymi.r , y);
        }
    }


    /*
    REP(i,30){
        debug(i);
        debug(q_ma(xma,i));
        debug(q_mi(xmi,i));
        debug(q_ma(yma,i));
        debug(q_mi(ymi,i));
        cout << endl;
    }
    */







   double ans = menseki(0);
   double t1,t2;


   
   t1 = xma.r - xma.m;
   t2 = xma.m - xma.l;

   if(t1 <= t2){
       chmin(ans,menseki(t1));
       chmin(ans,menseki(t2));
   }
   else{
       t2 = xma.r - xma.l;
       t2 /= 2;
       chmin(ans,menseki(t2));
   }



   t1 = xmi.m - xmi.l;
   t2 = xmi.r - xmi.m;
   if(t1 <= t2){
       chmin(ans,menseki(t1));
       chmin(ans,menseki(t2));
   }
   else{
       t2 = xmi.r - xmi.l;
       t2 /= 2;
       chmin(ans,menseki(t2));
   }



   t1 = yma.r - yma.m;
   t2 = yma.m - yma.l;
   if(t1 <= t2){
       chmin(ans,menseki(t1));
       chmin(ans,menseki(t2));
   }
   else{
       t2 = yma.r - yma.l;
       t2 /= 2;
       chmin(ans,menseki(t2));
   }



   t1 = ymi.m - ymi.l;
   t2 = ymi.r- ymi.m;
   if(t1 <= t2){
       chmin(ans,menseki(t1));
       chmin(ans,menseki(t2));
   }
   else{
       t2 = ymi.r - ymi.l;
       t2 /= 2;
       chmin(ans,menseki(t2));
   }


   cout << fixed << setprecision(10)<<ans << endl;

}

Measured memory_bytes: 256