parameters: (self, nums1, nums2)
return_statement: return dp[-1][0]
docstring: :type nums1: List[int]
          :type nums2: List[int]
          :rtype: int
docstring_summary: :type nums1: List[int]
          :type nums2: List[int]
          :rtype: int
docstring_tokens: : type nums1 : List [ int ] : type nums2 : List [ int ] : rtype : int
function: def minimumXORSum(self, nums1, nums2):
          """
          :type nums1: List[int]
          :type nums2: List[int]
          :rtype: int
          """
          dp = [(float("inf"), float("inf"))]*(2**len(nums2))
          dp[0] = (0, 0)
          for mask in xrange(len(dp)):
              bit = 1
              for i in xrange(len(nums2)):
                  if (mask&bit) == 0:
                      dp[mask|bit] = min(dp[mask|bit], (dp[mask][0]+(nums1[dp[mask][1]]^nums2[i]), dp[mask][1]+1))
                  bit <<= 1
          return dp[-1][0]
function_tokens: def minimumXORSum ( self , nums1 , nums2 ) : dp = [ ( float ( "inf" ) , float ( "inf" ) ) ] * ( 2 ** len ( nums2 ) ) dp [ 0 ] = ( 0 , 0 ) for mask in xrange ( len ( dp ) ) : bit = 1 for i in xrange ( len ( nums2 ) ) : if ( mask & bit ) == 0 : dp [ mask | bit ] = min ( dp [ mask | bit ] , ( dp [ mask ] [ 0 ] + ( nums1 [ dp [ mask ] [ 1 ] ] ^ nums2 [ i ] ) , dp [ mask ] [ 1 ] + 1 ) ) bit <<= 1 return dp [ - 1 ] [ 0 ]