def calculateMinimumSwaps(fileSize, affinity):
    n = len(fileSize)
    conflicts = [i for i in range(n) if fileSize[i] == affinity[i]]
    if not conflicts:
        return 0

    non_conflicts = [i for i in range(n) if fileSize[i] != affinity[i]]
    swaps = 0
    fileSize = fileSize[:]

    for i in conflicts[:]:
        swapped = False
        for j in non_conflicts:
            fileSize[i], fileSize[j] = fileSize[j], fileSize[i]
            if fileSize[i] != affinity[i] and fileSize[j] != affinity[j]:
                swaps += 1
                conflicts.remove(i)
                non_conflicts.remove(j)
                swapped = True
                break
            fileSize[i], fileSize[j] = fileSize[j], fileSize[i]
        if not swapped:
            continue

    while len(conflicts) > 1:
        i = conflicts.pop()
        j = conflicts.pop()
        fileSize[i], fileSize[j] = fileSize[j], fileSize[i]
        if fileSize[i] != affinity[i] and fileSize[j] != affinity[j]:
            swaps += 1
        else:
            return -1

    if conflicts:
        return -1
    return swaps
print(calculateMinimumSwaps([1,2,1,2,1,2],[1,1,2,2,1,2]))