#include <bits/stdc++.h>
using namespace std;
#define ll long long int
#define fast() ios::sync_with_stdio(0)
ll zero[105],one[105];
long long int do_it(int n,string p)
{
if(p.size()==1)
{
if(p=="0")
return zero[n];
else
return one[n];
}
if(n==0)
return 0;
int l=p.size();
for(int i=0;i<p.size()-1;i++)
{
if(p[i]=='0' && p[i+1]=='0')
return 0;
}
string s=NULL;
int i;
if(p[l-1]=='0')
{
if(p[0]=='0')
{
s=s+'1';
i=1;
}
for(;i<l;)
{
if(p[i+1]=='0')
{
s=s+'1';
i+=2;
}
else
{
s=s+'0';
i++;
}
}
}
return do_it(n-1,s);
}
else
{
if(p[0]=='0')
{
s=s+'1';
for(int i=1;i<l-1;)
{
if(p[i+1]=='0')
{
s=s+'1';
i+=2;
}
else
{
s=s+'0';
i++;
}
}
}
else
{
for(int i=0;i<l-1;)
{
if(p[i+1]=='0')
{
s=s+'1';
i+=2;
}
else
{
s=s+'0';
i++;
}
}
}
return do_it(n-1,s+'0') + do_it(n-1,s+'1');
}
}
int main()
{
fast();
zero[0]=1;
zero[1]=0;
one[0]=0;
one[1]=1;
for(int i=2;i<105;i++)
{
zero[i]=zero[i-1]+zero[i-2];
one[i]=one[i-1]+one[i-2];
}
int n;
while(cin>>n)
{
string p;
cin>>p;
do_it(n,p);
}
return 0;
}
/*6
10
7
10
6
01
6
101
96
10110101101101*/
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgbGwgbG9uZyBsb25nIGludAojZGVmaW5lIGZhc3QoKSBpb3M6OnN5bmNfd2l0aF9zdGRpbygwKQpsbCB6ZXJvWzEwNV0sb25lWzEwNV07CmxvbmcgbG9uZyBpbnQgZG9faXQoaW50IG4sc3RyaW5nIHApCnsKICAgIGlmKHAuc2l6ZSgpPT0xKQogICAgewogICAgICAgIGlmKHA9PSIwIikKICAgICAgICAJcmV0dXJuIHplcm9bbl07CiAgICAJZWxzZQogICAgCQlyZXR1cm4gb25lW25dOwogICAJfQogICAgaWYobj09MCkKICAgIAlyZXR1cm4gMDsKCWludCBsPXAuc2l6ZSgpOwogICAgIGZvcihpbnQgaT0wO2k8cC5zaXplKCktMTtpKyspCiAgICAgewogICAgICAgICBpZihwW2ldPT0nMCcgJiYgcFtpKzFdPT0nMCcpCiAgICAgICAgIAlyZXR1cm4gMDsKICAgICB9CiAgICAgc3RyaW5nIHM9TlVMTDsKICAgICBpbnQgaTsKICAgICBpZihwW2wtMV09PScwJykKICAgICB7CiAgICAgICAgIGlmKHBbMF09PScwJykKICAgICAgICAgewogICAgICAgICAgICAgcz1zKycxJzsKICAgICAgICAgICAgIGk9MTsKICAgICAgICAgfQogICAgICAgICAgICAgZm9yKDtpPGw7KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmKHBbaSsxXT09JzAnKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcz1zKycxJzsKICAgICAgICAgICAgICAgICAgICAgaSs9MjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcz1zKycwJzsKICAgICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgIH0gICAgICAgIAogICAgICAgICAgICAgfSAgICAKICAgICB9CiAgICAgICAgIHJldHVybiBkb19pdChuLTEscyk7ICAgICAgICAKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgaWYocFswXT09JzAnKQogICAgICAgICB7CiAgICAgICAgICAgICBzPXMrJzEnOwogICAgICAgICAgICAgZm9yKGludCBpPTE7aTxsLTE7KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIGlmKHBbaSsxXT09JzAnKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcz1zKycxJzsKICAgICAgICAgICAgICAgICAgICAgaSs9MjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgcz1zKycwJzsKICAgICAgICAgICAgICAgICAgICAgaSsrOwogICAgICAgICAgICAgICAgIH0gICAgICAgIAogICAgICAgICAgICAgfSAgICAKICAgICAgICAgfQogICAgICAgICBlbHNlCiAgICAgICAgIHsKICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8bC0xOykKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZihwW2krMV09PScwJykKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHM9cysnMSc7CiAgICAgICAgICAgICAgICAgICAgIGkrPTI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHM9cysnMCc7CiAgICAgICAgICAgICAgICAgICAgIGkrKzsKICAgICAgICAgICAgICAgICB9ICAgICAgICAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gZG9faXQobi0xLHMrJzAnKSArIGRvX2l0KG4tMSxzKycxJyk7Cgl9ICAgICAgICAgICAgCQp9ICAgIAppbnQgbWFpbigpCnsKICAgIGZhc3QoKTsKICAgIHplcm9bMF09MTsKICAgIHplcm9bMV09MDsKICAgIG9uZVswXT0wOwogICAgb25lWzFdPTE7CiAgICBmb3IoaW50IGk9MjtpPDEwNTtpKyspCiAgICB7CiAgICAgICAgemVyb1tpXT16ZXJvW2ktMV0remVyb1tpLTJdOwogICAgICAgIG9uZVtpXT1vbmVbaS0xXStvbmVbaS0yXTsKICAgIH0KICAgIGludCBuOwogICAgd2hpbGUoY2luPj5uKQogICAgewogICAgICAgIHN0cmluZyBwOwogICAgICAgIGNpbj4+cDsKICAgICAgICBkb19pdChuLHApOwoJfSAgICAKICAgIHJldHVybiAwOwogICAgCn0KLyo2CjEwCjcKMTAKNgowMQo2CjEwMQo5NgoxMDExMDEwMTEwMTEwMSov