#include<bits/stdc++.h>
using namespace std;
const int N=4005,mod=998244353;
typedef bitset<N>Bit;
int n,p[N];
Bit x,y,a[6];
int last(Bit x)
{
    for(int i=N-1;i>=0;i--)
        if(x[i]) return i;
    return -1;
}
Bit gcd(Bit x,Bit y)
{
    if(x.none()) return y;
    if(y.none()) return x;
    int s=last(x),t=last(y);
    if(s<t) return gcd(x,y^(x<<t-s));
    return gcd(y,x^(y<<s-t));
}
int main()
{
    p[0]=1;
    for(int i=1;i<N;i++) p[i]=p[i-1]*2%mod;
    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]);
    int s=last(x),t=last(a[0]);
    int ans=0;
    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])
    {
        ans+=x[i];break;
    }
    else if(i==0) ans++;
    printf("%lld\n",ans%mod);
}
