This depends on how you define the problem exactly -- with overlaps and costs and things.
This might reduces to Travelling salesman problem -- you can set edge weights as 0 if group i
and j
has nothing in common, and some function f(i,j)
that depends on the number of common items between them. Then, you want a list that goes from one group to the last group, visiting each group once, minimizing some function of overlap.
You can probably reduce TSP to a version of this (really depending on how specific you mean by "farthest as possible", with regards to competing overlaps) similarly.
Unfortunately, this is NP-complete, which means you should start looking for something that's "good enough".