import java.util.Scanner;
/**
* HJ33 整数与IP地址间的转换
* @author d3y1
*/
public class Main {
public static void main(String[] args) {
// solution1();
solution2();
}
/**
* 字符串
*/
private static void solution1(){
Scanner in = new Scanner(System.in);
String ipAddr = in.nextLine().trim();
String ipNumber = in.nextLine().trim();
System.out.println(ipAddrToNumber(ipAddr));
System.out.println(ipNumberToAddr(ipNumber));
}
/**
* IP地址 -> 10进制的IP地址
*
* 256进制 -> 2进制 -> 10进制
*
* @param ipAddr
* @return
*/
private static String ipAddrToNumber(String ipAddr){
String[] parts = ipAddr.split("\\.");
StringBuilder sb = new StringBuilder();
String binStr;
int len;
for(String part: parts){
binStr = Integer.toBinaryString(Integer.parseInt(part));
len = binStr.length();
for(int i=1; i<=8-len; i++){
sb.append(0);
}
sb.append(binStr);
}
// Long number = 0L;
// for(char ch: sb.toString().toCharArray()){
// number = (number<<1) + Integer.valueOf(String.valueOf(ch));
// }
return String.valueOf(Long.parseLong(sb.toString(), 2));
}
/**
* 10进制的IP地址 -> IP地址
*
* 10进制 -> 2进制 -> 256进制
*
* @param ipNumber
* @return
*/
private static String ipNumberToAddr(String ipNumber){
String binStr = Long.toBinaryString(Long.parseLong(ipNumber));
int len = binStr.length();
StringBuilder sb = new StringBuilder();
for(int i=1; i<=32-len; i++){
sb.append(0);
}
sb.append(binStr);
StringBuilder ipAddr = new StringBuilder();
String ipBinStr = sb.toString();
String part;
int val;
for(int i=0; i<32; i+=8){
part = ipBinStr.substring(i, i+8);
// val = 0;
// for(char ch: part.toCharArray()){
// val = (val<<1) + Integer.valueOf(String.valueOf(ch));
// }
val = Integer.parseInt(part, 2);
ipAddr.append(val);
ipAddr.append(".");
}
return ipAddr.substring(0, ipAddr.length()-1);
}
/**
* 字符串
*/
private static void solution2(){
Scanner in = new Scanner(System.in);
String ipAddr = in.nextLine().trim();
String ipNumber = in.nextLine().trim();
System.out.println(AddrToNumber(ipAddr));
System.out.println(NumberToAddr(ipNumber));
}
/**
* IP地址 -> 10进制的IP地址
*
* 256进制 -> 10进制 (直接转换 不用经过2进制)
*
* @param ipAddr
* @return
*/
private static String AddrToNumber(String ipAddr){
String[] parts = ipAddr.split("\\.");
Long number = 0L;
for(String part: parts){
number = number*256 + Integer.parseInt(part);
}
return String.valueOf(number);
}
/**
* 10进制的IP地址 -> IP地址
*
* 10进制 -> 256进制 (直接转换 不用经过2进制)
*
* @param ipNumber
* @return
*/
private static String NumberToAddr(String ipNumber){
Long number = Long.parseLong(ipNumber);
StringBuilder sb = new StringBuilder();
for(int i=1; i<=4; i++){
sb.insert(0, number%256+".");
number /= 256;
}
return sb.substring(0, sb.length()-1);
}
}