```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
)
func main() {
in := bufio.NewReader(os.Stdin)
var t int
fmt.Fscan(in, &t)
for i := 0; i < t; i++ {
var n, k int
fmt.Fscan(in, &n, &k)
a := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &a[i])
}
b := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &b[i])
}
type interval struct {
x, y int64
}
intervals := make([]interval, n)
var original int64 = 0
for i := 0; i < n; i++ {
minv := a[i]
maxv := b[i]
if minv > maxv {
minv, maxv = maxv, minv
}
intervals[i] = interval{minv, maxv}
original += maxv - minv
}
sort.Slice(intervals, func(i, j int) bool {
return intervals[i].x < intervals[j].x
})
hasOverlap := false
var minGap int64 = 1 << 60
for i := 0; i < n-1; i++ {
if intervals[i].y >= intervals[i+1].x {
hasOverlap = true
} else {
gap := intervals[i+1].x - intervals[i].y
if gap < minGap {
minGap = gap
}
}
}
var ans int64
if hasOverlap {
ans = original
} else {
ans = original + 2*minGap
}
fmt.Println(ans)
}
}
```