[><> (Fish)][1]><> (Fish), 68 34 Bytes
ri&:o&:&=\
l&io& /!?/
?!;20.\l!\
You can run it at http://fishlanguage.com/playgroundhttp://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