






line = input().split(" ")
node_c = int(line[0])
dim = int(line[1])
if dim <= 0 or node_c <= 0:
    print(-1)
    exit(0)
if node_c == 1:
    print(0)
    exit(0)
nodes = []
for i in range(node_c):
    n = [0 for j in range(dim)]
    line = input().split(" ")
    for d in range(dim):
        n[d] = int(line[d])
    nodes.append(n)



def compute_dist_per_dim(node_i):
    full_dist = 0.0
    dim_dist = [0.0 for j in range(dim)]
    for di in range(dim):
        for n_i in range(node_c):
            if n_i == node_i:
                continue
            diff = abs(nodes[n_i][di] - nodes[node_i][di])
            dim_dist[di] += diff
            full_dist += diff

    #find min diff
    max_diff = dim_dist[0]
    for n_dist in dim_dist:
        if n_dist > max_diff:
            max_diff = n_dist
    return full_dist - max_diff

min_diff = -1
min_i = -1
for i in range(node_c):
    dist = compute_dist_per_dim(i)
    if min_diff == -1 or dist < min_diff:
        min_diff = dist
        min_i = i

dir = [[1,0],[-1,0],[0,1],[0,-1]]
n = nodes[min_i]
for dirr in dir:
    i = 1
    while 1:
        nodes.append([n[0] + i*dirr[0],n[0] + i*dirr[1]])
        nmin_diff = -1
        min_i = -1
        for i in range(node_c):
            dist = compute_dist_per_dim(i)
            if nmin_diff == -1 or dist < min_diff:
                nmin_diff = dist
                min_i = i
        nodes.pop(-1)
        if nmin_diff >= min_diff:
            break
        min_diff = nmin_diff
        i+=1

if min_diff == -1:
    print(-1)
else:
    print(int(min_diff*2))