// Задача "Равномерное распределение"
// 8-я Интернет-олимпиада сезона 2008-2009, базовый уровень.
// Автор задачи:  Владимир Ульянцев, ulyantsev@rain.ifmo.ru
// Автор решения: Владимир Ульянцев, ulyantsev@rain.ifmo.ru

uses
	math, sysutils;
const
	MAXN = 1000;
	MAXA = 1000000;
type
	int = longint;
var
	n, i, j, av : int;
	a : array [0..MAXN - 1] of int;
	sum, ans, cnt : int64;

begin
	assign(input, 'balance.in');
	reset(input);
	assign(output, 'balance.out');
	rewrite(output);

	read(n);
	assert((1 <= n) and (n <= MAXN));

	av := 0;
	for i := 0 to n - 1 do begin
		read(a[i]);
		assert((0 <= a[i]) and (a[i] <= MAXA));
		av := av + a[i];
	end;

	if (av mod n <> 0) then begin
		writeln('-1');
		halt;
	end;
	av := av div n;

	ans := -1;
	for j := 0 to n - 1 do begin
		sum := 0;
		cnt := 0;
		for i := 1 to n - 1 do begin
		    cnt := cnt + a[(i + j) mod n];
		    sum := sum + abs(cnt - av * i);
		end;

		if ((sum < ans) or (ans = -1)) then	
			ans := sum;
	end;

	writeln(ans);
end.
