1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <bits/stdc++.h>
using namespace std;

int n;
int r1, r2, r3;
string A, B, C, D, E;
int wynik;
int i, j;
long long mod=1000000007;
int Dif12, Dif23, Dif31;
long long Ilo1, Ilo2, Ilo3, Ilo12, Ilo23, Ilo31, Ilo123;

int Dis(string X, string Y)
{
    int ile=0;
    for (i=0; i<X.size(); ++i)
        if (X[i]!=Y[i])
            ++ile;
    return ile;
}


int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin>>n;
    cin>>r1>>A>>r2>>B>>r3>>C;

    for (i=0; i<n; ++i){
        D+='0';
        E+='1';
    }

    while(1>0){
        if (Dis(A, D)<=r1)
            ++wynik;
        else if (Dis(B, D)<=r2)
            ++wynik;
        else if (Dis(C, D)<=r3)
            ++wynik;
        if(D==E)
            break;
        else{
            ++D[D.size()-1];
            for (i=D.size()-1; i>=0; --i){
                if (D[i]=='2'){
                    D[i]='0';
                    D[i-1]++;
                }
            }
        }
    }
    cout<<wynik;




    return 0;
}