function judgeIP(str) {
  let number = str.split(".").map(Number);
  for (let i = 0; i < number.length; i++) {
    if (number[i] < 0 || number[i] > 255) {
      return false;
    }
  }
  return true;
}
function judgeCover(str) {
  let newstr = str.split(".");
  newstr = newstr.map(Number);
  for (let i = 0; i < newstr.length; i++) {
    if (newstr[i] < 0 || newstr[i] > 255) {
      return false;
    }
  }
  let res = str
    .split(".")
    .map((item) => {
      return parseInt(item).toString(2).padStart(8,'0');
    })
    .join("")
    .split("");
  let first0 = res.indexOf("0");
  return res.slice(first0).indexOf("1") == -1 ? true : false;
}
let arr = [];
while ((line = readline())) {
  arr.push(line);
}

function output(arr) {
  while (arr.length) {
    let cover = arr.shift();
    let ip1 = arr.shift();
    let ip2 = arr.shift();
    let judge1 = judgeCover(cover);
    let judge2 = judgeIP(ip1);
    let judge3 = judgeIP(ip2);
    if (judge1 && judge2 && judge3) {
      let res = [];
      ip1 = ip1.split(".").map(Number);
      ip2 = ip2.split(".").map(Number);
      cover = cover.split(".").map(Number);

      for (let i = 0; i < 4; i++) {
        res.push((ip1[i] & cover[i]) == (ip2[i] & cover[i]) ? "1" : "-1");
      }
      if (res.includes("-1")) {
        console.log(2);
      } else {
        console.log(0);
      }
    } else {
      console.log(1);
    }
  }
}
output(arr);