← Home
```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)

	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	scanInt := func() int {
		scanner.Scan()
		val, _ := strconv.Atoi(scanner.Text())
		return val
	}

	if !scanner.Scan() {
		return
	}
	n, _ := strconv.Atoi(scanner.Text())

	p := make([]int, n)
	for i := 0; i < n; i++ {
		p[i] = scanInt()
	}

	enter := make([]int, n)
	var curD int64 = 0
	var curC int64 = 0

	for i := 0; i < n; i++ {
		v := p[i]
		pos := i + 1
		dist := int64(v - pos)
		if dist < 0 {
			dist = -dist
		}
		curD += dist

		if v <= pos {
			curC++
		}

		if v > 1 {
			s := (v - 1 - i + n) % n
			enter[s]++
		}
	}

	minD := curD
	minK := 0

	for step := 0; step < n-1; step++ {
		idx := n - 1 - step
		vEnd := int64(p[idx])

		curD = curD + 2*curC + 2*vEnd - 2*int64(n) - 2

		if vEnd > 1 {
			curC--
		}
		curC += int64(enter[step+1])

		if curD < minD {
			minD = curD
			minK = step + 1
		}
	}

	fmt.Fprintln(writer, minD, minK)
}
```