#include <bitset>
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
string strip, ip1, ip2;
bool ishefa(string st) {
    string str[4];
    string token;
    istringstream ss(st);
    int i = 0;
    while (getline(ss, token, '.')) {
        str[i] = token;
        i++;
    }
    if (atoi(str[0].c_str()) == 0)return false;
    for (int i = 0; i < 4; i++) {
        if (atoi(str[i].c_str()) < 0 || atoi(str[i].c_str()) > 255)
            return false;
    }
    return true;
}
bool ishefa1(string st) {
    string token;
    istringstream ss(st);
    int i = 0;
    string tmp;
    while (getline(ss, token, '.')) {
       int num= atoi(token.c_str());
       if(num>255 || num<0)return false;
         bitset<8> b(num);
        tmp+=b.to_string();
        
    }
    int coun=0;
    for(int i=31;i>=0;i--){
        if(tmp[i]=='1'){
          
            coun=i;
            break;
            }
    }
   string s= tmp.substr(0,coun+1);
   coun=0;
   for(int i=0;i<s.size();i++){
    if(s[i]=='1')coun++;
   }
    if(s.size()==coun)return true;
    else return false;
}
bool issim(string strip, string ip1, string ip2) {
    string str1[4], str2[4], str3[4];
    string token;
    istringstream ss1(strip), ss2(ip1), ss3(ip2);
    int i = 0;
    while (getline(ss1, token, '.')) {
        str1[i] = token;
        i++;
    }

    i = 0;
    while (getline(ss2, token, '.')) {
        str2[i] = token;
        i++;
    }
    i = 0;
    while (getline(ss3, token, '.')) {
        str3[i] = token;
        i++;
    }

    for (int i = 0; i < 4; i++) {
        bitset<8> b1(atoi(str1[i].c_str()));
        bitset<8> b2(atoi(str2[i].c_str()));
        bitset<8> b3(atoi(str3[i].c_str()));
        string t1 = b1.to_string(), t2 = b2.to_string(), t3 = b3.to_string();
        string m1 = "", m2 = "";
        for (int j = 0; j < 8; j++) {
            if (t1[j] == '1' && t2[j] == '1')m1 += '1';
            else m1 += '0';
            if (t1[j] == '1' && t3[j] == '1')m2 += '1';
            else m2 += '0';
        }
        if (m1 != m2)return false;
    }

    return true;
}
int main() {
    while (cin >> strip >> ip1 >> ip2) {
        if (!ishefa1(strip) || !ishefa(ip1) || !ishefa(ip2) ) {
            cout << '1' << endl;
            //continue;
        } else  if (issim(strip, ip1, ip2)) {
            cout << '0' << endl;
        } else cout << '2' << endl;
    }
}
// 64 位输出请用 printf("%lld")