<p>You are given a <strong>0-indexed</strong> array of positive integers <code>nums</code>. Find the number of triplets <code>(i, j, k)</code> that meet the following conditions:</p>

<ul>
	<li><code>0 &lt;= i &lt; j &lt; k &lt; nums.length</code></li>
	<li><code>nums[i]</code>, <code>nums[j]</code>, and <code>nums[k]</code> are <strong>pairwise distinct</strong>.
	<ul>
		<li>In other words, <code>nums[i] != nums[j]</code>, <code>nums[i] != nums[k]</code>, and <code>nums[j] != nums[k]</code>.</li>
	</ul>
	</li>
</ul>

<p>Return <em>the number of triplets that meet the conditions.</em></p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> nums = [4,4,2,4,3]
<strong>Output:</strong> 3
<strong>Explanation:</strong> The following triplets meet the conditions:
- (0, 2, 4) because 4 != 2 != 3
- (1, 2, 4) because 4 != 2 != 3
- (2, 3, 4) because 2 != 4 != 3
Since there are 3 triplets, we return 3.
Note that (2, 0, 4) is not a valid triplet because 2 &gt; 0.
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> nums = [1,1,1,1,1]
<strong>Output:</strong> 0
<strong>Explanation:</strong> No triplets meet the conditions so we return 0.
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>3 &lt;= nums.length &lt;= 100</code></li>
	<li><code>1 &lt;= nums[i] &lt;= 1000</code></li>
</ul>

class Solution:
    def unequalTriplets(self, nums: List[int]) -> int:

        # def fact(num):
        #     product = 1
        #     while num != 0:
        #         product *= num
        #         num -= 1
        #     return product


        # if(len(nums)) < 3:
        #     return 0

        # hash_map = {}
        # for item in nums:
        #     hash_map[item] = hash_map.get(item, 0) + 1

        # if len(hash_map) < 3:
        #     return 0

        # n = len(hash_map)
        # combs = fact(n) // (fact(n-3) * fact(3))
        # print(combs)

        # for key in hash_map:
        #     combs *= hash_map[key]

        # return combs

        # Count frequency of each element
        freq = Counter(nums)
    
        # Get list of unique elements
        unique_elements = list(freq.keys())
        n = len(unique_elements)
    
        # Initialize the count of valid triplets
        triplet_count = 0
    
        # Iterate through all combinations of 3 distinct elements
        for a, b, c in combinations(unique_elements, 3):
        # Calculate the number of triplets for this combination
            triplet_count += freq[a] * freq[b] * freq[c]
    
        return triplet_count
386