#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

ll dp[65][3];
ll n;
vector<ll>v;
void ctdp()
{
    dp[0][0]=1;
    dp[0][1]=1;
    for(ll i=1;i<=n;i++){
        if(v[i-1]==0){
            dp[i][0]=dp[i-1][0];
            dp[i][1]=dp[i-1][0]+(2*dp[i-1][1]);
        }else{
            dp[i][0]=(2*dp[i-1][0])+dp[i-1][1];
            dp[i][1]=dp[i-1][1];
        }
    }
}

int main()
{
    cin>>n;
    for(ll i=0;i<n;i++){
        string tmp;
        cin>>tmp;
        if(tmp=="AND")v.push_back(1);
        else v.push_back(0);
    }
    ctdp();
    cout<<dp[n][1]<<endl;
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
const int N=4e5+2;
int stk[N],top;
int n,m,p,e,a[N],b[N];
int main()
{
	scanf("%d",&n);
	m=n<<1;
	for(int i=1;i<=m;++i)
	{
		scanf("%d",&a[i]);
		b[i]=a[i];
	}
	sort(b+1,b+m+1);
	for(int i=1;i<=m;++i)
		if(a[i]<b[n])++p;
		else if(a[i]>b[n])++e;
	for(int i=1;i<=m;++i)
	{
		int fl=0;
		if(a[i]>b[n])fl=1;
		else if(a[i]==b[n]&&p<n)++p;
		else if(a[i]==b[n]&&p==n)fl=1,++e;
		//else if(a[i]==b[n]&&!top)fl=1,++e;
		if(top&&stk[top]!=fl)putchar(')'),--top;
		else stk[++top]=fl,putchar('(');
	}
}
