package main import "fmt" func main() { var n, m int fmt.Scan(&n, &m) shoot := make([]int, n) for i := range shoot { fmt.Scan(&shoot[i]) } min, cnt := -1, 0 ma := make([]int, m+1) l, r := 0, 0 for ; r < n; r++ { if cnt == m { for ; l <= r && cnt == m; l++ { if min == -1 || r-l < min { min = r - l } if c := shoot[l]; c != 0 { ma[c]-- if ma[c] == 0 { cnt-- } } } } if c := shoot[r]; c != 0 { if ma[c] == 0 { cnt++ } ma[c]++ } } if cnt == m && r-l < min { min = r - l } fmt.Println(min) }