If you want to find a minimum number of lists to cover all the names, that is the set cover problem. If the lists have different prices and you want to minimize the total cost, that is the weighted set cover problem, mentioned on the same page. If you want to maximize the number of names covered subject to a budget on the number or total cost of the lists, that is the maximum coverage problem, also known as the partial set cover problem.
You can solve all of these variants by calling the MILP solver in PROC OPTMODEL. You would declare a binary decision variable for each list and a constraint for each name. For the partial set cover problem, you would declare an additional binary decision variable for each name to indicate whether it is covered.
... View more