import sys
# ========== 第一部分:IP地址 → 十进制整数 ==========
# 1. 读取输入的IP地址,用split('.')按点号分割成四段字符串
# 例:输入"10.0.3.193" → ip = ['10', '0', '3', '193']
ip = sys.stdin.readline().split('.')
# 2. 遍历IP的每一段,转成8位二进制字符串(高位自动补0)
# format(x, '08b')的作用:
# - 'b' 表示转成二进制
# - '08' 表示强制8位,不足8位时左边补0,保证每段都是8位
# 例:int('10') → 10 → format(10, '08b') → '00001010'
for i in range(len(ip)):
ip[i] = format(int(ip[i]), '08b')
# 3. 把四段8位二进制字符串拼接成一个完整的32位二进制字符串
# 例:['00001010', '00000000', '00000011', '11000001'] → '00001010000000000000001111000001'
a1 = ''.join(ip)
# 4. 把32位二进制字符串转成十进制整数
# int(字符串, 进制):按指定进制解析字符串为十进制数
# 例:int('00001010000000000000001111000001', 2) → 167773121
b1 = int(a1, 2)
# 5. 输出转换后的十进制IP
print(b1)
# ========== 第二部分:十进制整数 → IP地址 ==========
# 1. 读取输入的十进制IP字符串(strip()去掉末尾换行符)
ip_10 = sys.stdin.readline().strip()
# 2. 把十进制IP转成32位二进制字符串,强制高位补0
# format(x, '032b')的作用:
# - 'b' 表示转成二进制
# - '032' 表示强制32位,不足32位时左边补0,保证总长度为32
# 例:167773121 → format(167773121, '032b') → '00001010000000000000001111000001'
a2 = format(int(ip_10), '032b')
# 3. 准备一个空列表,用来存转好的IP四段数字字符串
ip_10_list = []
# 4. 把32位二进制字符串按每8位一段分割,转成十进制数字
# range(0, 32, 8):从0开始,步长8,循环到32(不含32)
# 例:i=0 → 0-7位,i=8 → 8-15位,i=16 → 16-23位,i=24 → 24-31位
for i in range(0, 32, 8):
# 取出当前8位二进制字符串
part_bin = a2[i:i+8]
# 把这8位二进制转成十进制数字
# 例:'00001010' → int('00001010', 2) → 10
part_dec = int(part_bin, 2)
# 把数字转成字符串,加入列表(方便后面用.拼接)
ip_10_list.append(str(part_dec))
# 5. 用点号把四段数字字符串拼接成标准IP格式并输出
# 例:['10', '0', '3', '193'] → '10.0.3.193'
print('.'.join(ip_10_list))