def array_combinations(*args):
    combinations = set([frozenset([i]) for i in set(args[0])])
    for arg in args[1:]:
        tempcomb = []
        for i in set(arg):
            tempcomb += [frozenset(list(c)+[i]) for c in combinations if i not in c ]
        combinations = set(tempcomb)
    return [list(comb) for comb in combinations]
res = array_combinations(a,b)
print res
print len(res)