#include <iostream>
#include <string>
#include <vector>
#include <cstdio>
using namespace std;
//稍微懂点 位运算 和 网络ip 这题就不难
int main() {
    vector<int> ym(4,0);
    while(scanf("%d.%d.%d.%d",&ym[0],&ym[1],&ym[2],&ym[3]) != EOF){
        vector<int> ip1(4,0);
        vector<int> ip2(4,0);
        scanf("%d.%d.%d.%d",&ip1[0],&ip1[1],&ip1[2],&ip1[3]);
        scanf("%d.%d.%d.%d",&ip2[0],&ip2[1],&ip2[2],&ip2[3]);
        for(int i = 0 ; i < 4; i++){//判断掩码是否合法
            if(ym[i] < 0 || ym[i] > 255){//掩码超出0-255
                cout << 1 << endl;
                return 0;
            }else{
                if( i < 3){//掩码前一位不是255 但该位不为0
                    if( ym[i] < 255 && ym[i+1] > 0){
                        cout << 1 << endl;
                        return 0;
                    }
                }
            }
        }

        for(int i = 0 ; i < 4; i++){//判断ip是否合法
            if(ip1[i] > 255 || ip2[i] > 255 || ip1[i] < 0 || ip2[i] < 0){
                cout << 1 << endl;
                return 0;
            }
        }

        bool flag;
        for(int i = 0 ; i < 4; i++){//直接与255相与后比较
            flag = (ip1[i] & ym[i]) == (ip2[i] & ym[i]) ? true : false;
            if(!flag){//相与后不相等
                cout << 2 << endl;
                return 0;
            }
        }
        if(flag) cout << 0 << endl;//相与后全相等
    }
}
// 64 位输出请用 printf("%lld")