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)
}