← Home
package main

import (
	"fmt"
	"io"
	"os"
	"sort"
)

func nextInt(data []byte, idx *int) int64 {
	n := len(data)
	for *idx < n {
		b := data[*idx]
		if b != ' ' && b != '\n' && b != '\r' && b != '\t' {
			break
		}
		*idx++
	}
	var sign int64 = 1
	if *idx < n && data[*idx] == '-' {
		sign = -1
		*idx++
	}
	var val int64
	for *idx < n {
		b := data[*idx]
		if b < '0' || b > '9' {
			break
		}
		val = val*10 + int64(b-'0')
		*idx++
	}
	return sign * val
}

func abs(x int64) int64 {
	if x < 0 {
		return -x
	}
	return x
}

func main() {
	data, _ := io.ReadAll(os.Stdin)
	idx := 0
	n := int(nextInt(data, &idx))

	c := make([]int64, n)
	for i := 0; i < n; i++ {
		a := nextInt(data, &idx)
		c[i] = a - int64(i)
	}

	s := append([]int64(nil), c...)
	sort.Slice(s, func(i, j int) bool { return s[i] < s[j] })

	prev := make([]int64, n)
	cur := make([]int64, n)

	for j := 0; j < n; j++ {
		prev[j] = abs(c[0] - s[j])
	}

	for i := 1; i < n; i++ {
		best := prev[0]
		cur[0] = best + abs(c[i]-s[0])
		for j := 1; j < n; j++ {
			if prev[j] < best {
				best = prev[j]
			}
			cur[j] = best + abs(c[i]-s[j])
		}
		prev, cur = cur, prev
	}

	ans := prev[0]
	for j := 1; j < n; j++ {
		if prev[j] < ans {
			ans = prev[j]
		}
	}

	fmt.Print(ans)
}