#include <bits/stdc++.h>
using i64 = long long;

int main() {
    i64 n;
    const i64 mod = 998244353;
    std::string str;
    std::cin >> n >> str;
    std::bitset<4010> x(str);
    std::vector<std::bitset<4010>> a(n);
    for (int i = 0; i < n; i++) {
        std::cin >> str;
        a[i] = std::bitset<4010>(str);
    }

    std::vector<i64> pow2(4010);
    pow2[0] = 1;
    for (int i = 1; i < 4010; i++) pow2[i] = pow2[i - 1] * 2 % mod;

    auto gcd(a[0]);
    for (int i = 1; i < n; i++) {
        auto curr = a[i];
        while (1) {
            int d1 = 4000, d2 = 4000;
            while (!gcd[d1] && d1 > 0) d1--;
            while (!curr[d2] && d2 > 0) d2--;
            if (d2 > d1) {
                std::swap(d1, d2);
                std::swap(gcd, curr);
            }
            if (!d2 && !curr[d2]) break;
            if (gcd == curr) break;

            gcd = gcd ^ (curr << (d1 - d2));
        }
    }

    i64 d = 4000, ret = 0, dx = 4000;
    while (!gcd[d]) d--;
    while (!x[dx]) dx--;
    auto y = x >> d;
    for (int i = 0; i < 4000; i++) if (y[i]) ret = (ret + pow2[i]) % mod;
    auto q = y << d;
    for (int i = 0; i <= dx - d; i++) {
        if (q[dx - i]) q ^= gcd << (dx - i - d);
    }
    q |= y << d;
    if (x.to_string() >= q.to_string()) ret++;

    std::cout << ret << std::endl;

    return 0;
}