first.each do |letter|
        # This will produce all a__ combinations, iterating from right to left.
        begin
          result << letter + parts.map(&:peek).join
          parts[-1].next