#include<bits/stdc++.h>
//#define maxn 
using namespace std;
int read()
{
	int s=0,w=1;
	char ch=getchar();
	while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
	while(ch>='0'&&ch<='9') s=(s<<3)+(s<<1)+(ch^48),ch=getchar();
	return s*w;
}
void rein(char*str)
{
	int n=0;char opt;
	while((opt=getchar())<'a'||opt>'z');
	while(opt>='a'&&opt<='z')str[n++]=opt,opt=getchar();
	str[n]='\0';
}
//int ksm(int x,int y)
//{
//	int r=1;
//	while(y)
//	{
//		if(y&1) r=1ll*r*x%mod;
//		x=1ll*x*x%mod,y>>=1;
//	}
//	return r;
//}
//int a[maxn];
int n;
long long ans;char S[10];
signed main()
{
	n=read();
	for(int i=1;i<=n;i++)
	{
		scanf("%s",S);
		if(S[0]=='O') ans+=(1ll<<i);
	}
	cout<<ans+1;
	return 0;
}
#include<bits/stdc++.h>
using namespace std;
long long n,dp[70][2]={0};
int main()
{
	cin>>n;
	string s[n];
	for(int i=0;i<n;i++)
	  cin>>s[i];
	dp[0][0]=1;
	dp[0][1]=1;
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<2;j++)
		{
	    	for(int k=0;k<2;k++)
			{
		  		if(s[i]=="AND") 
		     	  dp[i+1][j&k]+=dp[i][j];
		  		else 
		     	  dp[i+1][j|k]+=dp[i][j];
	    	}
		}
	}
	cout<<dp[n][1];
}