Perl, 51 bytes -------------- $s=<>;$s=~s=^.*$_=$_=,$,.=$&for split"",<>;print$,; Input is provided via STDIN. First input is the starting word (e.g. `chameleon`), second input is the letters as a single string (e.g. `caln`). The above is just an obfuscated (read "prettier") way of doing the following: $word = <>; for $letter(split "", <>) { $word =~ s/^.*$letter/$letter/; $result .= $&; } print $result; As we go through each letter, we replace from the start of the word up to the letter in the source word with just the new letter, and append the match (stored in `$&`) to our result. Since the match includes the letter and then gets replaced with the letter, each letter ends up appearing twice. Because STDIN appends a new line character to both of our inputs, we're guaranteed to capture the remnants of the full word on the last match, i.e. the new line character.