#include<bits/stdc++.h>
using namespace std;
const int N=4010;
typedef bitset<N>B;
typedef long long ll;
const int mod=998244353;
ll p[N];
void init()
{
    p[0]=1;
    for(int i=1;i<N;i++) p[i]=p[i-1]*2%mod;
}
int last(B x)
{
    for(int i=N-1;i>=0;i--)
        if(x[i]) return i;
    return -1;
}
B gcd(B x,B y)
{
    if(x.none()) return y;
    if(y.none()) return x;
    int a=last(x),b=last(y);
    if(a<b) swap(x,y),swap(a,b);
    return gcd(y,x^(y<<a-b));
}
int n;
B x,y,a[7];
int main()
{
    init();
    cin>>n>>x;
    for(int i=0;i<n;i++) cin>>a[i];
    for(int i=1;i<n;i++) a[0]=gcd(a[0],a[i]);
    ll ans=0;
    int s=last(x),t=last(a[0]);
    y.reset();
    for(int i=s;i>=t;i--)
    {
        if(x[i]) ans=(ans+p[i-t])%mod;
        if(x[i]!=y[i]) y^=a[0]<<(i-t);
    }
    for(int i=s;i>=0;i--)
    {
        if(x[i]==y[i])
        {
            if(i==0) ans++;
            continue;
        }
        if(x[i]) ans++;
        break;
    }
    printf("%lld\n",ans%mod);
}
