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