import java.io.*;
    import java.util.*;
     
    public class Main {
    	FastReader scn;
    	PrintWriter out;
    	String INPUT = "";
     
    	void solve() {
		int n = scn.nextInt();
		int[] arr = new int[n];
		for (int i = 0; i < n; i++) {
			arr[i] = scn.nextInt() - i - 1;
		}
		Arrays.sort(arr);

		if (n % 2 == 1) {
			int b = arr[n / 2];
			out.println(get(arr, b));
		} else {
			n--;
			out.println(Math.min(get(arr, arr[n / 2]), get(arr, arr[n / 2 + 1])));
		}
	}

	long get(int[] arr, int b) {
		long rv = 0;
		for (int i = 0; i < arr.length; i++) {
			rv += Math.abs(arr[i] - b);
		}
		return rv;
	}
     
    	void run() throws Exception {
    		long time = System.currentTimeMillis();
    		boolean oj = true;
    		out = new PrintWriter(System.out);
    		scn = new FastReader(oj);
    		solve();
    		out.flush();
    		if (!oj) {
    			System.out.println(Arrays.deepToString(new Object[] { System.currentTimeMillis() - time + " ms" }));
    		}
    	}
     
    	public static void main(String[] args) throws Exception {
    		new Main().run();
    	}
     
    	class FastReader {
    		InputStream is;
     
    		public FastReader(boolean onlineJudge) {
    			is = onlineJudge ? System.in : new ByteArrayInputStream(INPUT.getBytes());
     
    		}
     
    		byte[] inbuf = new byte[1024];
    		public int lenbuf = 0, ptrbuf = 0;
     
    		int readByte() {
    			if (lenbuf == -1)
    				throw new InputMismatchException();
    			if (ptrbuf >= lenbuf) {
    				ptrbuf = 0;
    				try {
    					lenbuf = is.read(inbuf);
    				} catch (IOException e) {
    					throw new InputMismatchException();
    				}
    				if (lenbuf <= 0)
    					return -1;
    			}
    			return inbuf[ptrbuf++];
    		}
     
    		boolean isSpaceChar(int c) {
    			return !(c >= 33 && c <= 126);
    		}
     
    		int skip() {
    			int b;
    			while ((b = readByte()) != -1 && isSpaceChar(b))
    				;
    			return b;
    		}
     
    		double nextDouble() {
    			return Double.parseDouble(next());
    		}
     
    		char nextChar() {
    			return (char) skip();
    		}
     
    		String next() {
    			int b = skip();
    			StringBuilder sb = new StringBuilder();
    			while (!(isSpaceChar(b))) { // when nextLine, (isSpaceChar(b) && b != ' ')
    				sb.appendCodePoint(b);
    				b = readByte();
    			}
    			return sb.toString();
    		}
     
    		char[] next(int n) {
    			char[] buf = new char[n];
    			int b = skip(), p = 0;
    			while (p < n && !(isSpaceChar(b))) {
    				buf[p++] = (char) b;
    				b = readByte();
    			}
    			return n == p ? buf : Arrays.copyOf(buf, p);
    		}
     
    		char[][] nextMatrix(int n, int m) {
    			char[][] map = new char[n][];
    			for (int i = 0; i < n; i++)
    				map[i] = next(m);
    			return map;
    		}
     
    		int[] nextArray(int n) {
    			int[] a = new int[n];
    			for (int i = 0; i < n; i++)
    				a[i] = nextInt();
    			return a;
    		}
     
    		long[] nextLongArray(int n) {
    			long[] a = new long[n];
    			for (int i = 0; i < n; i++)
    				a[i] = nextInt();
    			return a;
    		}
     
    		int nextInt() {
    			int num = 0, b;
    			boolean minus = false;
    			while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'))
    				;
    			if (b == '-') {
    				minus = true;
    				b = readByte();
    			}
     
    			while (true) {
    				if (b >= '0' && b <= '9') {
    					num = num * 10 + (b - '0');
    				} else {
    					return minus ? -num : num;
    				}
    				b = readByte();
    			}
    		}
     
    		long nextLong() {
    			long num = 0;
    			int b;
    			boolean minus = false;
    			while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'))
    				;
    			if (b == '-') {
    				minus = true;
    				b = readByte();
    			}
     
    			while (true) {
    				if (b >= '0' && b <= '9') {
    					num = num * 10 + (b - '0');
    				} else {
    					return minus ? -num : num;
    				}
    				b = readByte();
    			}
    		}
     
    		int[] shuffle(int[] arr) {
    			Random r = new Random();
    			for (int i = 1, j; i < arr.length; i++) {
    				j = r.nextInt(i);
    				arr[i] = arr[i] ^ arr[j];
    				arr[j] = arr[i] ^ arr[j];
    				arr[i] = arr[i] ^ arr[j];
    			}
    			return arr;
    		}
    	}
    }

Measured memory_bytes: 24916