using System.Collections.Generic;
public IList<string> LetterCombinations(string digits) {
IList<string> res = new List<string>();
Dictionary<char, IList<char>> numberLetters = new Dictionary<char, IList<char>>();
numberLetters.Add('2', new List<char>(){'A','B','C'});
numberLetters.Add('3', new List<char>(){'D','E','F'});
numberLetters.Add('4', new List<char>(){'G','H','I'});
numberLetters.Add('5', new List<char>(){'J','K','L'});
numberLetters.Add('6', new List<char>(){'M','N','O'});
numberLetters.Add('7', new List<char>(){'P','Q','R', 'S'});
numberLetters.Add('8', new List<char>(){'T','U','V'});
numberLetters.Add('9', new List<char>(){'W','X','Y','Z'});
LetterCombinationsHelp(digits, 0, "", numberLetters, res);
public void LetterCombinationsHelp(string digits, int index, string prefix, Dictionary<char, IList<char>> numberLetters, IList<string> res)
IList<char> letters = numberLetters[digits[index]];
foreach(char c in letters)
string cur = prefix + c.ToString();
LetterCombinationsHelp(digits, index+1, cur, numberLetters, res);
public static void Main()
string digits = Console.ReadLine();
var res = new Program().LetterCombinations(digits);
Console.WriteLine("Output:"+string.Join("\", \"", res));