Algorithm\n1. Define a DP table dp
to memoize the minimum cost for each combination of index in the first group and bitmask of connections in the second group.\n2. Define a recursive function dfs
that takes the current index i
of the first group and the current bitmask mask
.\n3. If i
is equal to the size of the first group, return the sum of minimum costs for unconnected points in the second group based on the bitmask.\n4. If the result for the current i
and mask
is already computed, return it from the dp
table.\n5. Iterate over all points j
in the second group:\n a. Calculate the new bitmask new_mask
by setting the j
th bit of mask
.\n b. Calculate the cost new_cost
of connecting point i
of the first group with point j
of the second group and add the result of dfs(i + 1, new_mask)
.\n c. Update the minimum cost for the current i
and mask
.\n6. Save the minimum cost in the dp
table and return it.\n7. Call dfs(0, 0)
to start the process and return the final minimum cost.