lsts = Join[Thread[{Join[Range[5], Range[8, 10]], "sing"}], Thread[{Range[6, 10], "dance"}]]; Length[ Select[Count[Last /@ #, "sing"] == 2 && Count[Last /@ #, "dance"] == 2 &] @ Select[DuplicateFreeQ @* Map[First]] @ Subsets[lsts, {4}]] > 199