let [| n; k |] = stdin.ReadLine().Split() |> Array.map int let g = Array.init (n + 1) (fun _ -> []) for i = 1 to n - 1 do let [| a; b |] = stdin.ReadLine().Split() |> Array.map int g.[a] <- b :: g.[a] g.[b] <- a :: g.[b] let seen = Array.zeroCreate <| n + 1 let dist = Array.init (n + 1) (fun _ -> []) dist.[0] <- [ 1 ] let mutable ans = 0 let mutable coin = k if n >= k then for d in 0 .. n - 1 do for x in dist.[d] do if coin > 0 && not seen.[x] then seen.[x] <- true dist.[d + 1] <- dist.[d + 1] @ g.[x] ans <- ans + d coin <- coin - 1 else ans <- -1 ans |> printfn "%d"