Я вот как думаю решить, берём делаем массив с исходными данными, где каждой цифре соответсвует набор значений, которые она может принимать. Берём ввод, каждую цифру пишем в массив, сравниваем циклом с массивом с исходными данным и записываем подходящую строку напротив цифры. В итоге мы получаем массив с введёнными данными где каждой цифре соответсвуют значения которые она может принимать. Строка ведь это тоже массив, получается у нас массив с массивами значений, нужно теперь их все между собой как-то пересочитать чтобы перебрать все возможные варианты и вывести их пользователю.