Same length, different string
Python 2, 21 bytes

lambda s:`s`[:len(s)]


Try it online!

Takes the string representation of the input string and truncates it to the length of the input string. For a typical string, this puts it in ' quotes and chops off the end:

abc  -&gt;   'abc'  -&gt;  'ab
     rep        chop


Note that the new string starts with '. Let's show that the output always differs from the input.


If the input has no ', then the output starts with ' and the input does not. 
If the input contains a ' and but no ", then Python will use " for the outer quotes, giving a first character " that's not in the input string.
If the input has both ' and ", then the outer quotes are ' and each ' is escaped as \'. Wherever the first " appears in the input, it's shifted right by the initial ' in the output and by any possible escaping. This means it cannot match with a " in the corresponding position in the output.


Finally, note that quoting the input and possibly escaping characters always increases the number of characters, so truncating the output makes it the same length as the input.

Note that it was crucial that Python adaptively switches to " in the second case. If it didn't do so, it would fail on the three-character input '\'. Or, any longer prefix of the fix show string using '. So, this method won't work for most languages.