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