
from bisect import bisect_left
def minDiffOfArrays(a, b):
lst = [(i, j) for (i,j) in zip(a,b)]
lst.sort(key=lambda y: y[0])
res =[abs(i - j) for (i, j) in lst]
cursum = sum(res)
cur_ = float('inf')
idx = 0
a.sort()
for i in lst :
k = bisect_left(a, i[1])
if k == len(a):
k_ = abs(i[1]-a[k-1])
elif k >0:
k_ = min(abs(i[1]-a[k]), abs(i[1]-a[k-1]))
else :
k_ = abs(i[1]-a[k])
cur_ = min(cur_, abs(cursum - res[idx]+ k_))
idx+=1
return cur_