Count disjoint bit pairs

Write codeHard35 minCitadel style

Your task

Given nums (each in [0, 2^bits)) and the integer bits, count the number of unordered pairs of distinct indices (i, j) with i < j such that nums[i] & nums[j] == 0 (the two values share no set bit). Use the value bits as the bit width. There can be repeated values, and 0 pairs with everything (including other zeros).

Examples

count_disjoint_pairs(nums: list[int], bits: int) -> int
Example 1
Inputcount_disjoint_pairs([0, 1, 2, 3], 2)
Output4