Here I am trying to find a brief way to make sure that each match is obtained from a different file. If there are no duplicates in the files, this is pretty simple in perl:
perl -lnwE '$a{$_}++; END { for (keys %a) { print if $a{$_} == 3 } }' files*
The -l option will automatically hide your input (delete a new line) and add a new line to print. This is important if there are no new lines.
The -n option will read the input from the arguments to the file name (or stdin).
The hash assignment will count duplicates, and the END block will print which duplicates appeared 3 times. Change 3 to the number of files you have.
If you want a slightly more flexible version, you can count the arguments in a BEGIN block.
perl -lnwE 'BEGIN { $n = scalar @ARGV } $a{$_}++; END { for (keys %a) { print if $a{$_} == $n } }' files*
source share