I'm working in Python 3.

I have five lists like the following:

```
l1 = [1, 2]
l2 = ['A', 'B', 'C']
l3 = ['d', 'e', 'f', 'g']
l4 = ['word1', 'word2', 'word3', 'word4', 'word5']
l5 = [10, 20, 30, 40, 50, 60]

```

The lists have variable lengths, and every element in every list is unique.
I want to find all possible combinations of elements in the lists that meet the following conditions:

1. Each combination as at least one element from one of the lists, so no combination is empty. In other words, an empty list `[]` is not a permitted combination.
2. Each combination has at most one element from each of the lists, so no combination has multiple elements from the same list. For example, each of these lists is ***not*** permitted as a combination: `[1, 'A', 'B'], ['d', 'e'], ['C', 'word2', 'word3']`.
3. Combinations are permitted to have less than one element from every list. For example, each of these lists is individually a permitted combination: `[1], [1, 'A'], [1, 'A', 'd'], [1, 'A', 'd', 'word1'], [1, 'A', 'd', 'word1', 10]`.
4. Order doesn't matter. I'm interested in combinations, not permutations. For example, `[1, 'A']` is the same combination as `['A', 1]`, and `[1, 'B', 'word2']` is the same combination as `['B', 'word2', 1]`.
5. Combinations shouldn't have duplicates of the same element. For example, each of these lists is ***not*** permitted as a combination: `[1, 1, 'A'], ['A', 'd', 'A']`.

A consequence of these conditions is that every combination will have at least one element and at most five elements.

A solution like the one mentioned [here](https://stackoverflow.com/questions/23306590/all-combinations-of-elements-with-exactly-one-element-from-each-group) won't work since it doesn't meet condition 3 above.

I'm looking for an elegant and efficient solution. I'm also looking for a general solution since the actual lists I'm working with differ in size and content from the ones given above.