To compute dp[mask][i], consider bit i of mask:
1. If bit i is 0 in mask: submasks must also have bit i=0. So dp[mask][i]=dp[mask][i−1]. Nothing new to add.
2. If bit i is 1 in mask: submasks can have bit i as 0 or 1. Those with bit i=1 contribute dp[mask][i−1]. Those with bit i=0 contribute dp[mask⊕2i][i−1] (flip bit i off). Combined: dp[mask][i]=dp[mask][i−1]+dp[mask⊕2i][i−1] when bit i is set.