#include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i,n) for(int i=0;i<(n);i++) #define reps(i,n) for(int i=1;i<=(n);i++) #define lol long long #define SUM(n) ((n)+1)*(n)/2 //1〜nまでの総和を求める式 #define mp make_pair #define fi first #define se second #define pu push_back #define SYOU(x) setprecision(x+1) //小数点桁数を指定する #define abs(x,y) (max(x,y)-min(x,y)) #define all(v) v.begin(),v.end() #define UPDight(a,b) (a+b-1)/b //小数点切り上げ const int INF = 0x3f3f3f3f; const long long LINF = 0x3f3f3f3f3f3f3f3fLL; const int MOD=int(1e9)+7; using namespace std; using pii = pair; vector edge[100005]; bool isvisited[100005] = {false}; int dfs(int x,int sum){ if(isvisited[x]){ return sum; } isvisited[x] = true; for(int i = 0 ; i < edge[x].size() ; i ++){ sum = dfs(edge[x][i],sum); } return sum + 1; } int main(){ cin.tie(0); ios::sync_with_stdio(false); int n, k; cin >> n >> k; int a, b; rep(i,n - 1){ cin >> a >> b; edge[a].push_back(b); edge[b].push_back(a); } int sum = dfs(1,0); if(sum < k){ cout << -1 << '\n'; } else { cout << k - 1 << '\n'; } return 0; }