package main

var mBtn = map[byte][]string{
	'2': {"a", "b", "c"},
	'3': {"d", "e", "f"},
	'4': {"g", "h", "i"},
	'5': {"j", "k", "l"},
	'6': {"m", "n", "o"},
	'7': {"p", "q", "r", "s"},
	'8': {"t", "u", "v"},
	'9': {"w", "x", "y", "z"},
}

func letterCombinationsIter(digits string, last []string) []string {
	if len(digits) == 0 {
		return last
	}
	res := make([]string, 0)
	char := mBtn[digits[0]]
	for _, v := range last {
		for _, c := range char {
			res = append(res, v+c)
		}
	}
	return letterCombinationsIter(digits[1:], res)
}

func letterCombinations(digits string) []string {
	if len(digits) == 0 {
		return []string{}
	}
	return letterCombinationsIter(digits[1:], mBtn[digits[0]])
}

/* func main() {
	fmt.Println(letterCombinations("23"))
	fmt.Println(letterCombinations("234"))
}
*/