Buggy python submission (verdict: Runtime Error):
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from decimal import *


N = int(input())
nmove_x = [10**9, -10**9] ##[min,max]
nmove_y = [10**9, -10**9] ##[min,max]
move = {"U":[10**9, -10**9], "D":[10**9, -10**9], "R":[10**9, -10**9], "L":[10**9, -10**9]}

for _ in range(N):
  x,y,d = map(str, input().split())
  x,y = [int(x),int(y)]
  if d in "UD":#!/usr/bin/python3
# -*- coding: utf-8 -*-
from decimal import *


N = int(input())
nmove_x = [10**9, -10**9] ##[min,max]
nmove_y = [10**9, -10**9] ##[min,max]
move = {"U":[10**9, -10**9], "D":[10**9, -10**9], "R":[10**9, -10**9], "L":[10**9, -10**9]}

for _ in range(N):
  x,y,d = map(str, input().split())
  x,y = [int(x),int(y)]
  if d in "UD":
    move[d] = [min([move[d][0],y]),max([move[d][1],y])]
    nmove_x = [min([nmove_x[0],x]),max([nmove_x[1],x])]
  else:
    move[d] = [min([move[d][0],x]),max([move[d][1],x])]
    nmove_y = [min([nmove_y[0],y]),max([nmove_y[1],y])]


def get_bb(t):
  x_mx = max([move["R"][1]+t,move["L"][1]-t,nmove_x[1]])
  x_mn = min([move["R"][0]+t,move["L"][0]-t,nmove_x[0]])
  y_mx = max([move["U"][1]+t,move["D"][1]-t,nmove_y[1]])
  y_mn = min([move["U"][0]+t,move["D"][0]-t,nmove_y[0]])
  return ((x_mx-x_mn)*(y_mx-y_mn))


## にぶたん！
l,r = [Decimal("0"),Decimal("10000000000")]
for _ in range(500):
  m = Decimal(l+r)/2
  if get_bb(m-Decimal("0.00000001")) < get_bb(m+Decimal("0.00000001")):
    r = m
  else:
    l = m
print(get_bb(m))
    move[d] = [min([move[d][0],y]),max([move[d][1],y])]
    nmove_x = [min([nmove_x[0],x]),max([nmove_x[1],x])]
  else:
    move[d] = [min([move[d][0],x]),max([move[d][1],x])]
    nmove_y = [min([nmove_y[0],y]),max([nmove_y[1],y])]


def get_bb(t):
  x_mx = max([move["R"][1]+t,move["L"][1]-t,nmove_x[1]])
  x_mn = min([move["R"][0]+t,move["L"][0]-t,nmove_x[0]])
  y_mx = max([move["U"][1]+t,move["D"][1]-t,nmove_y[1]])
  y_mn = min([move["U"][0]+t,move["D"][0]-t,nmove_y[0]])
  return ((x_mx-x_mn)*(y_mx-y_mn))


## にぶたん！
l,r = [0,10**8]
for _ in range(300):
  m = Decimal(l+r)/2
  if get_bb(m-Decimal("0.0000000001")) < get_bb(m+Decimal("0.0000000001")):
    r = m
  else:
    l = m
print(get_bb(m))

Fixed submission:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from decimal import *


N = int(input())
nmove_x = [10**9, -10**9] ##[min,max]
nmove_y = [10**9, -10**9] ##[min,max]
move = {"U":[10**9, -10**9], "D":[10**9, -10**9], "R":[10**9, -10**9], "L":[10**9, -10**9]}

for _ in range(N):
  x,y,d = map(str, input().split())
  x,y = [int(x),int(y)]
  if d in "UD":
    move[d] = [min([move[d][0],y]),max([move[d][1],y])]
    nmove_x = [min([nmove_x[0],x]),max([nmove_x[1],x])]
  else:
    move[d] = [min([move[d][0],x]),max([move[d][1],x])]
    nmove_y = [min([nmove_y[0],y]),max([nmove_y[1],y])]


def get_bb(t):
  x_mx = max([move["R"][1]+t,move["L"][1]-t,nmove_x[1]])
  x_mn = min([move["R"][0]+t,move["L"][0]-t,nmove_x[0]])
  y_mx = max([move["U"][1]+t,move["D"][1]-t,nmove_y[1]])
  y_mn = min([move["U"][0]+t,move["D"][0]-t,nmove_y[0]])
  return ((x_mx-x_mn)*(y_mx-y_mn))


## にぶたん！
l,r = [Decimal("0"),Decimal("10000000000")]
for _ in range(500):
  m = Decimal(l+r)/2
  if get_bb(m-Decimal("0.00000001")) < get_bb(m+Decimal("0.00000001")):
    r = m
  else:
    l = m
print(get_bb(m))