Given a dictionary file (a text file containing a word or phrase on each line, with possible punctuation but no numbers; lines are alphabetized), you must output each combination of words where one letter can be removed from a word to make another; the removed letter should be encased in parentheses.
For example, the input
should give an output of
Multiple ways to get the same pair must only be displayed once. You can output
scrap(p)ed, but not both.
The output should be ordered alphabetically by the longer entry;
should have an output of
and the latter two could be in either order.
The dictionary file may include capitalizations, spaces, hyphens, or apostrophes; these should be ignored. For instance,
in(p)lay. Your output should all be in the same case. Extra whitespace is allowed.
Input can be STDIN or from a file; it is separated by newlines. Output can be return value of a function or STDOUT (or written to a file if you wanted).
This is code-golf, so the shortest code in bytes wins.
(This is my first challenge on PPCG - let me know if I've done anything wrong and I'll fix it.)