#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // #include using namespace std; using ll = long long; using P = pair; constexpr ll INF = 9e18; constexpr int inf = 1e9; const double INFD = 1e100; const ll mod = 1000000007; const double PI = 3.1415926535897932384626433832795028841971; const int dx[4] = {1, 0, -1, 0}; const int dy[4] = {0, 1, 0, -1}; template inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }; template inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }; // intやllをstringに変換 template inline string toString(const T &a){ ostringstream oss; oss << a; return oss.str(); }; // ---------------------------------------------------------------------------- int main(){ int N,K; cin >> N >> K; vector> G(N); for(int i=0; i> a >> b; a--; b--; G[a].push_back(b); G[b].push_back(a); } if(K > N){ cout << -1 << endl; return 0; } queue que; que.push(0); vector dist(N,-1); dist[0] = 0; ll ans = 0; while(que.size()){ int v = que.front(); que.pop(); for(int nv: G[v]){ if(dist[nv] != -1) continue; dist[nv] = dist[v] + 1; if(K > 1){ K--; ans++; }else{ break; } que.push(nv); } } cout << ans << endl; return 0; }