#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 2e5 + 5;
long long n,sz[MaxN],sum=1,cnt,k;
vector<long long> a[MaxN];
void dfs(long long i, long long par, long long check)
{
        for(long long x:a[i])
        {
            if(x!=par)
            {
                dfs(x,i,check);
                sz[i]+=sz[x];
            }
        }
        if (sz[i]>=check)
        {
            cnt++;
            sz[i]=0;
        }

}
bool check(long long mid)
{
    dfs(1,1,mid);
    return cnt>=k+1;
}
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> k;
    for (long long i=1; i<=n-1; i++)
    {
        long long u,v;
        cin >> u >> v;
        a[u].push_back(v);
        a[v].push_back(u);
    }
    long long l=1, r=n;
    while (l<=r)
    {
        for (long long i=1; i<=n; i++)
        {
            sz[i]=1;
        }
        long long  mid=(l+r)/2;
        cnt=0;
        if (check(mid))
        {
            l=mid+1;
        }
        else
        {
            r=mid-1;
        }
    }
    cout << r;
}