[><> (Fish)][1], <strike>68</strike> 34 Bytes ---------- ri&:o&:&=\ l&io& /!?/ ?!;20.\l!\ You can run it at http://fishlanguage.com/playground inputting the string as the initial stack (with " marks, i.e. "chameleon") and the array of extra letters as the input stack (no " marks i.e. caln). Don't forget to press the Give button to seed the input stack. r reverses the stack i& reads in the first input, and stores it in the register :o copies the top of the stack, and outputs the top of the stack &:& puts register value on stack, copies it, then puts top stack into register = checks if the top two values are equal, if yes push 1, else push 0 ? if top value is non-zero, execute next instruction ! skips the following instruction (unless it was skipped by the previous ?) If yes, then we proceed on the same line &o puts register value on stack, and outputs it i& reads in the first input, and stores it in the register l puts length of stack on stack, then proceed to lowest line If no, we go directly to the last line l As above. ?!; If zero value (from length), then end execution 20. Push 2 and 0 onto stack, then pop top two values, and go to that position (2,0) (i.e. next instruction is at (3,0)) EDIT: Halved it! :) [1]: http://esolangs.org/wiki/Fish