#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")