#include<bits/stdc++.h>//万能头
using namespace std;
int n;//操作数
int Xmax=1,Xmin=0,Ymax=0,Ymin=-1;//上,下,左,右,的边界
string s;
struct node//脚的坐标
{
int x,y;
}FR,FL,RR,RL;//前右脚(Front right foot)前左脚(Front left foot)后右脚(Rear right foot)后左脚(Rear left foot)
void COW()//奶牛的初始化
{
FR.x=1,FR.y=0;
FL.x=0,FL.y=0;
RR.x=1,RR.y=-1;
RL.x=0,RL.y=-1;
}
bool same(node a,node b)
{
if(a.x==b.x&&a.y==b.y) return true;
return false;
}
bool check()
{
if(same(FL,FR)||same(FL,RL)||same(FL,RR)||same(FR,RL)||same(FR,RR)||same(RL,RR)) return true;
return false;
}
void FB()//移动
{
if(s[0]=='F')//前进
{
if(s[1]=='F')//前脚
{
if(s[2]=='L')
/*前左脚*/{FL.y-=1;Ymin=min(Ymin,FL.y);}else
/*前右脚*/{FR.y-=1;Ymin=min(Ymin,FR.y);}
}else//后脚
{
if(s[2]=='L')
/*后左脚*/{RL.y-=1;Ymin=min(Ymin,RL.y);}else
/*后右脚*/{RR.y-=1;Ymin=min(Ymin,RR.y);}
}
}else//后退
if(s[0]=='B');
{
if(s[1]=='F')//前脚
{
if(s[2]=='L')
/*前左脚*/{FL.y+=1;Ymax=max(Ymax,FL.y);}else
/*前右脚*/{FR.y+=1;Ymax=max(Ymax,FR.y);}
}else
{
if(s[2]=='L')
/*后左脚*/{RL.y+=1;Ymax=max(Ymax,RL.y);}else
/*后右脚*/{RR.y+=1;Ymax=max(Ymax,RR.y);}
}
}
}
void LR()//旋转
{
//LFT示意图
// .. .. .. ..
// .. FL .. ..
// .. FR .. ..
// RR .. LR ..
// -----------
// .. .. .. LR
// .. FL FR ..
// .. .. .. RR
// .. .. .. ..
//
if(s[0]=='L')//左转
{
if(s[1]=='F')//前脚
{
if(s[2]=='L')
/*前左脚*/
{
FL.x=FL.x;
FL.y=FL.y;
FR.x=FL.x+(FL.y-FR.y);
FR.y=FL.y+(FL.x-FR.x);
RR.x=FL.x+(FL.y-RR.y);
RR.y=FL.y+(FL.x-RR.x);
RL.x=FL.x+(FL.y-RL.y);
RL.y=FL.y+(FL.x-RL.x);
}else
/*前右脚*/
{
FL.x=FR.x+(FR.y-FL.y);
FL.y=FR.y+(FR.x-FL.x);
FR.x=FR.x;
FR.y=FR.y;
RR.x=FR.x+(FR.y-RR.y);
RR.y=FR.y+(FR.x-RR.x);
RL.x=FR.x+(FR.y-RL.y);
RL.y=FR.y+(FR.x-RL.x);
}
}else/*后脚*/
{
if(s[2]=='L')
/*后左脚*/
{
FL.x=RL.x+(RL.y-FL.y);
FL.y=RL.y+(RL.x-FL.x);
FR.x=RL.x+(RL.y-FR.y);
FR.y=RL.y+(RL.x-FR.x);
RR.x=RL.x+(RL.y-RR.y);
RR.y=RL.y+(RL.x-RR.x);
RL.x=RL.x;
RL.y=RL.y;
}else
/*后右脚*/
{
FL.x=RR.x+(RR.y-FL.y);
FL.y=RR.y+(RR.x-FL.x);
FR.x=RR.x+(RR.y-FR.y);
FR.y=RR.y+(RR.x-FR.x);
RR.x=RR.x;
RR.y=RR.y;
RL.x=RR.x+(RR.y-RL.y);
RL.y=RR.y+(RR.x-RL.x);
}
}
}else//右转
{
if(s[1]=='F')//前脚
{
if(s[2]=='L')
/*前左脚*/
{
FL.x=FL.x;
FL.y=FL.y;
FR.x=FL.x-(FL.y-FR.y);
FR.y=FL.y-(FL.x-FR.x);
RR.x=FL.x-(FL.y-RR.y);
RR.y=FL.y-(FL.x-RR.x);
RL.x=FL.x-(FL.y-RL.y);
RL.y=FL.y-(FL.x-RL.x);
}else
/*前右脚*/
{
FL.x=FR.x-(FR.y-FL.y);
FL.y=FR.y-(FR.x-FL.x);
FR.x=FR.x;
FR.y=FR.y;
RR.x=FR.x-(FR.y-RR.y);
RR.y=FR.y-(FR.x-RR.x);
RL.x=FR.x-(FR.y-RL.y);
RL.y=FR.y-(FR.x-RL.x);
}
}else/*后脚*/
{
if(s[2]=='L')
/*后左脚*/
{
FL.x=RL.x-(RL.y-FL.y);
FL.y=RL.y-(RL.x-FL.x);
FR.x=RL.x-(RL.y-FR.y);
FR.y=RL.y-(RL.x-FR.x);
RR.x=RL.x-(RL.y-RR.y);
RR.y=RL.y-(RL.x-RR.x);
RL.x=RL.x;
RL.y=RL.y;
}else
/*后右脚*/
{
FL.x=RR.x-(RR.y-FL.y);
FL.y=RR.y-(RR.x-FL.x);
FR.x=RR.x-(RR.y-FR.y);
FR.y=RR.y-(RR.x-FR.x);
RR.x=RR.x;
RR.y=RR.y;
RL.x=RR.x-(RR.y-RL.y);
RL.y=RR.y-(RR.x-RL.x);
}
}
}
Xmax=max(Xmax,FL.x);
Xmax=max(Xmax,FR.x);
Xmax=max(Xmax,RL.x);
Xmax=max(Xmax,RR.x);
Xmin=min(Xmin,FL.x);
Xmin=min(Xmin,FR.x);
Xmin=min(Xmin,RL.x);
Xmin=min(Xmin,RR.x);
Ymax=max(Ymax,FL.y);
Ymax=max(Ymax,FR.y);
Ymax=max(Ymax,RL.y);
Ymax=max(Ymax,RR.y);
Ymin=min(Ymin,FL.y);
Ymin=min(Ymin,FR.y);
Ymin=min(Ymin,RL.y);
Ymin=min(Ymin,RR.y);
}
int main()
{
COW();//奶牛的初始化
scanf("%d",&n);//读入
for(int i=1;i<=n;i++)
{
cin>>s;
/*再回顾题目
"F" - 向前
"B" - 向后
"R" - 向右
"L" - 向左
*/
FB();
LR();
// if(check())
// {
// printf("-1");
// return 0;
// }
}
int XX=Xmax-Xmin+1,YY=Ymax-Ymin+1;
int BC=max(XX,YY);
printf("%d",BC*BC);
int tt;cin>>tt;
}