Unfortunately, the problem, despite illusionary simplicity, is not well defined. (By the way, you need to understand that giving an example does not mean definition of required behavior; examples can only illustrate it.)
First, when all you have on the output of editing, there is no information on what characters are "edited", it is already lost. Say, you add a character but then remove it (I understand that you don't need to detect it, it's just for example). Then, if you capture the "text changed" event, you detect it, but cannot see the difference by comparing lines. For more essential and realistic example consider this: original: "some correct words", on output: "awesome incorrect worlds", so let me capitalize the "changes": "AWEsome INcorrect worLds". In fact, one took the existing fragments "some", "correct", "wor" and "ds" (note that two of them are not recognizable worlds you could took from an English dictionary even if you used one), so you would need first to "recognize" these fragments in the original text to show the "differences".
This is not a trivial problem; and we still don't have a definition of what we want to achieve, it might be even a problem with ambiguous requirements…
To get some idea on more productive approach, you can get familiar with such thing as "diff" algorithms:
http://en.wikipedia.org/wiki/Diff[
^].
They are different: they display data per line, but the help to identify matching and different fragment and display in the way to show "differences" in a way comprehensible to a human reader. I an not sure it makes any sense to do it at the level of single line (I would say not), but at least you can get to understanding of the problem.
—SA