def main():
    import sys
    input = sys.stdin.read().split()
    ptr = 0
    N = int(input[ptr])
    ptr += 1
    K = int(input[ptr])
    ptr += 1
    p = list(map(int, input[ptr:ptr+N]))
    ptr += N
    B = list(map(int, input[ptr:ptr+N]))
    ptr += N

    if K == 0:
        print(0)
        return

    def initial_distance(p, B):
        return sum(abs(a - b) for a, b in zip(p, B))

    total = initial_distance(p, B)
    if K == 1:
        print(total)
        return

    if N <= 12:
        # Find cycle
        from collections import OrderedDict
        seen = OrderedDict()
        current = p.copy()
        cycle = []
        key = tuple(current)
        while key not in seen:
            seen[key] = len(cycle)
            cycle.append(current.copy())
            # Generate next permutation
            i = N-2
            while i >=0 and current[i] >= current[i+1]:
                i -= 1
            if i == -1:
                current = current[::-1]
            else:
                j = N-1
                while current[j] <= current[i]:
                    j -= 1
                current[i], current[j] = current[j], current[i]
                left = i+1
                right = N-1
                while left < right:
                    current[left], current[right] = current[right], current[left]
                    left +=1
                    right -=1
            key = tuple(current)
        # Find where the cycle starts
        start_idx = seen[key]
        cycle = cycle[start_idx:]
        # Precompute distances
        cycle_distances = [initial_distance(perm, B) for perm in cycle]
        cycle_length = len(cycle)
        # Compute total
        if K <= start_idx:
            # All steps are before the cycle
            print(sum(initial_distance(perm, B) for perm in seen.keys()[:K]))
        else:
            sum_before_cycle = sum(initial_distance(perm, B) for perm in list(seen.keys())[:start_idx])
            K -= start_idx
            full_cycles = K // cycle_length
            remainder = K % cycle_length
            sum_cycle = sum(cycle_distances)
            total = sum_before_cycle + full_cycles * sum_cycle + sum(cycle_distances[:remainder])
            print(total)
        return
    else:
        current = p.copy()
        current_sum = initial_distance(current, B)
        total_sum = current_sum
        for _ in range(K-1):
            # Generate next permutation
            i = N-2
            while i >= 0 and current[i] >= current[i+1]:
                i -= 1
            if i == -1:
                # Wrap around, all elements change
                old = current.copy()
                current = current[::-1]
                # Update current_sum
                new_sum = initial_distance(current, B)
                total_sum += new_sum
                current_sum = new_sum
            else:
                # Find j
                j = N-1
                while current[j] <= current[i]:
                    j -= 1
                # Swap i and j
                # Update current_sum
                current_sum -= abs(current[i] - B[i])
                current_sum -= abs(current[j] - B[j])
                current[i], current[j] = current[j], current[i]
                current_sum += abs(current[i] - B[i])
                current_sum += abs(current[j] - B[j])
                # Reverse from i+1 to end
                left = i+1
                right = N-1
                while left < right:
                    # Swap left and right
                    current_sum -= abs(current[left] - B[left])
                    current_sum -= abs(current[right] - B[right])
                    current[left], current[right] = current[right], current[left]
                    current_sum += abs(current[left] - B[left])
                    current_sum += abs(current[right] - B[right])
                    left += 1
                    right -= 1
                total_sum += current_sum
        print(total_sum)
        return

if __name__ == "__main__":
    main()