package main import . "fmt" func main() { var n,q int Scan(&n,&q) a := make([]int, n) for i := range a { Scan(&a[i]) } b := make([]int, q) for i := range b { Scan(&b[i]) } ans := solve(n, q, a, b) Println(ans) } func solve(n, q int, a, b []int) int { m := make(map[int][]int) for i, x := range a { m[x] = append(m[x], i) } dp := make([][]int, q+1) for i := range dp { dp[i] = make([]int, n) for j := range dp[i] { dp[i][j] = 1e15 } } dp[0][0] = 0 cur := []int{0} for i, x := range b { if a[cur[0]] == x { dp[i+1] = dp[i] continue } next := m[x] for _, from := range cur { cost := dp[i][from] for _, to := range next { dp[i+1][to] = min(dp[i+1][to], cost+abs(from-to)) } } cur = next } var ans int = 1e15 for _, i := range cur { ans = min(ans, dp[q][i]) } return ans } func abs(x int) int { if x < 0 { return -x } else { return x } }