import java.util.*;

/**
 * 原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数。
 * 举例:一个ip地址为10.0.3.193
 * 每段数字             相对应的二进制数
 * 10                   00001010
 * 0                    00000000
 * 3                    00000011
 * 193                  11000001
 * 组合起来即为:00001010 00000000 00000011 11000001,转换为10进制数就是:167773121,即该IP地址转换后的数字就是它了。。
 */
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextLine()) {
            String ipStr = in.nextLine(); // ip字符串
            String ipNum = in.nextLine(); // ip数字

            // ip地址转数字
            ipToNum(ipStr);

            // 数字转ip地址
            numToIp(Long.parseLong(ipNum));
        }
    }

    /**
     * ip转数字
     */
    private static void ipToNum(String ipStr) {
        String[] split = ipStr.split("\\.");
        final StringBuilder sb = new StringBuilder();
        for (String s : split) {
            StringBuilder s1 = new StringBuilder(Integer.toBinaryString(Integer.parseInt(
                    s)));// 转二进制
            // 不够8位时,在前面补0
            while (s1.length() < 8) {
                s1.insert(0, "0");
            }
            sb.append(s1);
        }
        // 转10进制输出
        System.out.println(Long.parseLong(sb.toString(), 2));
    }

    /**
     * 数字转ip
     */
    private static void numToIp(Long ipNum) {
        StringBuilder s = new StringBuilder(Long.toBinaryString(ipNum)); // 转二进制
        while (s.length() < 32) {
            s.insert(0, "0");
        }

        final StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 4; i++) {
            String s1 = s.substring(i * 8, (i + 1) * 8);
            int i1 = Integer.parseInt(s1, 2); // 转10进制
            sb.append(i1).append(".");
        }
        System.out.println(sb.deleteCharAt(sb.length() - 1));
    }

}