package main

var intMap = map[byte]int{
	byte('0'): 0,
	byte('1'): 1,
	byte('2'): 2,
	byte('3'): 3,
	byte('4'): 4,
	byte('5'): 5,
	byte('6'): 6,
	byte('7'): 7,
	byte('8'): 8,
	byte('9'): 9,
}

var byteMap = map[int]byte{
	0: byte('0'),
	1: byte('1'),
	2: byte('2'),
	3: byte('3'),
	4: byte('4'),
	5: byte('5'),
	6: byte('6'),
	7: byte('7'),
	8: byte('8'),
	9: byte('9'),
}


/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 计算两个数之和
 * @param s string字符串 表示第一个整数
 * @param t string字符串 表示第二个整数
 * @return string字符串
 */
func solve(s string, t string) string {
	// write code here
	ls := len(s)
	lt := len(t)
	minl := ls
	maxStr := t
	if lt < ls {
		minl = lt
		maxStr = s
	}

	flag := 0
	out := make([]byte, 0, len(maxStr)+1)
	for i := 0; i < minl; i++ {
		a := intMap[s[ls-1-i]]
		b := intMap[t[lt-1-i]]
		tmp := a + b + flag
		if tmp >= 10 {
			flag = 1
			out = append(out, byteMap[tmp%10])
			continue
		}
		flag = 0
		out = append(out, byteMap[tmp])
	}

	for i := minl; i < len(maxStr); i++ {
		n := intMap[maxStr[len(maxStr)-1-i]]
		tmp := n + flag
		if tmp >= 10 {
			flag = 1
			out = append(out, byteMap[tmp%10])
			continue
		}
		flag = 0
		out = append(out, byteMap[tmp])
	}
	if flag != 0 {
		out = append(out, byteMap[1])
	}
	bs := make([]byte, 0, len(out))
	for i := range out {
		bs = append(bs, out[len(out)-1-i])
	}
	return string(bs)
}