[><> (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