const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void (async function () {
// Write your code here
let n_IP = await readline();
let n_num = await readline();
// ip -> 二进制串 -> 十进制数字
let ip_arr = n_IP.split(".");
let ip_erjinzhi_str = ""; // 10进制转换为2进制后拼接的字符串
for (let i = 0; i < ip_arr.length; i++) {
let tmp = parseInt(ip_arr[i]).toString(2); // 十进制转换为二进制
if (tmp.length < 8) {
let chazhi = 8 - tmp.length,
qian0 = "";
for (let j = 0; j < chazhi; j++) {
qian0 += "0";
}
tmp = qian0 + tmp;
}
ip_erjinzhi_str += tmp;
}
let num_er_shi = er_str_shi(ip_erjinzhi_str); // 需要打印的十进制数字
// 十进制数字->二进制串-> ip
let shi_to_er_str = parseInt(n_num).toString(2);
if (shi_to_er_str.length < 32) {
let cha0 = 32 - shi_to_er_str.length;
let c0 = "";
for (let g = 0; g < cha0; g++) {
c0 += "0";
}
shi_to_er_str = c0 + shi_to_er_str;
}
let num_to_ip = "";
for (let f = 0; f < shi_to_er_str.length; f += 8) {
let tc = shi_to_er_str.substring(f, f + 8);
let tc_num_10 = er_str_shi(tc);
num_to_ip = num_to_ip + tc_num_10 + '.';
}
num_to_ip = num_to_ip.substring(0,num_to_ip.length-1); // 去掉最后一个点
console.log(num_er_shi);
console.log(num_to_ip);
})();
// 将二进制字符串转换成10进制
function er_str_shi(str) {
let str_arr = str.split("");
let num = 0;
for (let j = str_arr.length - 1; j >= 0; j--) {
let wei = str_arr.length - j; // 当前在倒数第几位
if (str_arr[j] == "1") {
let need2 = wei - 1;
if (need2 == 0) {
// 最后一位
num += 1;
} else {
let chengEr = 1;
for (let k = 0; k < need2; k++) {
chengEr *= 2;
}
num += chengEr;
}
}
}
return num;
}