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 jth 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.