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