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);