#include <stdio.h>
typedef long long ll;
ll num_calc(ll x,ll y,ll n);
char str[300001];
ll dir_x[4]={-1,1,0,0};
ll dir_y[4]={0,0,-1,1};
ll go[128];
int main(void)
{
ll n,Q,x=0,y=0,ret=0; go['U']=0; go['D']=1; go['L']=2; go['R']=3;
for(int i=0;i<Q;i++)
{
//UDLR
x=x+dir_x[go[str[i]]];
y=y+dir_y[go[str[i]]];
ret=ret+num_calc(x,y,n);
}
return 0;
}
ll num_calc(ll x,ll y,ll n)
{
ll u=x+y,temp,hang;
if(u<n)
{
temp=(u*(u+1))/2;
if(u&1)
return (temp+u+1-y);
else
return temp+y+1;
}
else
{
//(1) 1~n까지 더한다.
temp=(n*(n+1))/2;
//(2) 항 갯수 구한다.
hang=u-n;
//(3) 초항 : n-1 말항 : n-hang
temp=temp+(hang*(n-1+n-hang))/2;
//(4) y축 기준선 잡기
if(u&1)
return (temp+n-y);
else
{
//n-hang-1을 더한 후에..
temp=temp+n-hang-1;
// 기준선을 x=n-1로 잡자.
temp=temp-(n-1-y);
return temp;
}
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CnR5cGVkZWYgbG9uZyBsb25nIGxsOwpsbCBudW1fY2FsYyhsbCB4LGxsIHksbGwgbik7CmNoYXIgc3RyWzMwMDAwMV07CmxsIGRpcl94WzRdPXstMSwxLDAsMH07CmxsIGRpcl95WzRdPXswLDAsLTEsMX07CmxsIGdvWzEyOF07CmludCBtYWluKHZvaWQpCnsKICAgIGxsIG4sUSx4PTAseT0wLHJldD0wOyBnb1snVSddPTA7IGdvWydEJ109MTsgZ29bJ0wnXT0yOyBnb1snUiddPTM7CiAgICBzY2FuZigiJWxsZCVsbGRcbiIsJm4sJlEpOyBzY2FuZigiJXMiLHN0cik7CiAgICBmb3IoaW50IGk9MDtpPFE7aSsrKQogICAgewogICAgICAgIC8vVURMUgogICAgICAgIHg9eCtkaXJfeFtnb1tzdHJbaV1dXTsKICAgICAgICB5PXkrZGlyX3lbZ29bc3RyW2ldXV07CiAgICAgICAgcmV0PXJldCtudW1fY2FsYyh4LHksbik7CiAgICB9CiAgICBwcmludGYoIiVsbGRcbiIscmV0KzEpOwogICAgcmV0dXJuIDA7Cn0KbGwgbnVtX2NhbGMobGwgeCxsbCB5LGxsIG4pCnsKICAgIGxsIHU9eCt5LHRlbXAsaGFuZzsKICAgIGlmKHU8bikKICAgIHsKICAgICAgICB0ZW1wPSh1Kih1KzEpKS8yOwogICAgICAgIGlmKHUmMSkKICAgICAgICAgICAgcmV0dXJuICh0ZW1wK3UrMS15KTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHJldHVybiB0ZW1wK3krMTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICAvLygxKSAxfm7quYzsp4Ag642U7ZWc64ukLgogICAgICAgIHRlbXA9KG4qKG4rMSkpLzI7CiAgICAgICAgLy8oMikg7ZWtIOqwr+yImCDqtaztlZzri6QuCiAgICAgICAgaGFuZz11LW47CiAgICAgICAgLy8oMykg7LSI7ZWtIDogbi0xIOunkO2VrSA6IG4taGFuZwogICAgICAgIHRlbXA9dGVtcCsoaGFuZyoobi0xK24taGFuZykpLzI7CiAgICAgICAgCiAgICAgICAgLy8oNCkgeey2lSDquLDspIDshKAg7J6h6riwCiAgICAgICAgaWYodSYxKQogICAgICAgICAgICByZXR1cm4gKHRlbXArbi15KTsKICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICAvL24taGFuZy0x7J2EIOuNlO2VnCDtm4Tsl5AuLgogICAgICAgICAgICB0ZW1wPXRlbXArbi1oYW5nLTE7CiAgICAgICAgICAgIC8vIOq4sOykgOyEoOydhCB4PW4tMeuhnCDsnqHsnpAuCiAgICAgICAgICAgIHRlbXA9dGVtcC0obi0xLXkpOwogICAgICAgICAgICByZXR1cm4gdGVtcDsKICAgICAgICB9CiAgICB9Cn0=