/* AUTHOR: TUAN ANH - BUI */
// ~~ icebear ~~
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
typedef pair<int, ii> iii;
template<class X, class Y>
bool minimize(X &x, const Y &y) {
if (x > y) return x = y, true;
return false;
}
template<class X, class Y>
bool maximize(X &x, const Y &y) {
if (x < y) return x = y, true;
return false;
}
#define FOR(i,a,b) for(int i=(a); i<=(b); ++i)
#define FORR(i,a,b) for(int i=(a); i>=(b); --i)
#define REP(i, n) for(int i=0; i<(n); ++i)
#define RED(i, n) for(int i=(n)-1; i>=0; --i)
#define MASK(i) (1LL << (i))
#define BIT(S, i) (((S) >> (i)) & 1)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define all(x) x.begin(), x.end()
#define task "icebear"
/*END OF TEMPLATE. ICEBEAR AND THE CAT WILL WIN TST26 */
const int MOD = 1e9 + 7;
const int inf = (int)1e9 + 27092008;
const ll INF = (ll)1e18 + 27092008;
const int N = 2e5 + 5;
int numNode, limitSize;
vector<int> G[N];
int high[N], tour[N << 1], pos[N], minHigh[N << 1][20], timer = 0, curSize = 0;
set<int> nodes;
void dfs(int u, int par) {
pos[u] = ++timer;
tour[timer] = u;
for(int v : G[u]) if (v != par) {
high[v] = high[u] + 1;
dfs(v, u);
tour[++timer] = u;
}
}
#define MIN_HIGH(x, y) (high[x] < high[y] ? x : y)
int LCA(int u, int v) {
int l = pos[u], r = pos[v];
if (l > r) swap(l, r);
int k = __lg(r - l + 1);
return MIN_HIGH(minHigh[l][k], minHigh[r - MASK(k) + 1][k]);
}
void update(int u, int sign) {
nodes.insert(pos[u]);
auto it = nodes.find(pos[u]);
int prv = (it == nodes.begin() ? tour[*prev(nodes.end())] : tour[*prev(it)]);
int nxt = (next(it) == nodes.end() ? tour[*nodes.begin()] : tour[*next(it)]);
curSize -= sign * (high[LCA(u, nxt)] + high[LCA(u, prv)] - high[LCA(prv, nxt)]);
curSize += sign * high[u];
if (sign == -1) nodes.erase(it);
}
void init(void) {
cin >> numNode >> limitSize;
FOR(i, 2, numNode) {
int u, v;
cin >> u >> v;
G[u].pb(v);
G[v].pb(u);
}
}
void process(void) {
dfs(1, -1);
FOR(i, 1, timer) minHigh[i][0] = tour[i];
FOR(j, 1, 19) FOR(i, 1, timer - MASK(j) + 1)
minHigh[i][j] = MIN_HIGH(minHigh[i][j - 1], minHigh[i + MASK(j - 1)][j - 1]);
int l = 1, ans = 0;
FOR(r, 1, numNode) {
update(r, +1);
while(curSize >= limitSize) update(l++, -1);
maximize(ans, r - l + 1);
}
cout << ans;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
if (fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
int tc = 1;
// cin >> tc;
while(tc--) {
init();
process();
}
return 0;
}
LyogQVVUSE9SOiBUVUFOIEFOSCAtIEJVSSAqLwovLyB+fiBpY2ViZWFyIH5+CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gaWk7CnR5cGVkZWYgcGFpcjxpbnQsIGlpPiBpaWk7Cgp0ZW1wbGF0ZTxjbGFzcyBYLCBjbGFzcyBZPgogICAgYm9vbCBtaW5pbWl6ZShYICZ4LCBjb25zdCBZICZ5KSB7CiAgICAgICAgaWYgKHggPiB5KSByZXR1cm4geCA9IHksIHRydWU7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKdGVtcGxhdGU8Y2xhc3MgWCwgY2xhc3MgWT4KICAgIGJvb2wgbWF4aW1pemUoWCAmeCwgY29uc3QgWSAmeSkgewogICAgICAgIGlmICh4IDwgeSkgcmV0dXJuIHggPSB5LCB0cnVlOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiNkZWZpbmUgRk9SKGksYSxiKSBmb3IoaW50IGk9KGEpOyBpPD0oYik7ICsraSkKI2RlZmluZSBGT1JSKGksYSxiKSBmb3IoaW50IGk9KGEpOyBpPj0oYik7IC0taSkKI2RlZmluZSBSRVAoaSwgbikgZm9yKGludCBpPTA7IGk8KG4pOyArK2kpCiNkZWZpbmUgUkVEKGksIG4pIGZvcihpbnQgaT0obiktMTsgaT49MDsgLS1pKQojZGVmaW5lIE1BU0soaSkgKDFMTCA8PCAoaSkpCiNkZWZpbmUgQklUKFMsIGkpICgoKFMpID4+IChpKSkgJiAxKQojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgYWxsKHgpIHguYmVnaW4oKSwgeC5lbmQoKQojZGVmaW5lIHRhc2sgImljZWJlYXIiCi8qRU5EIE9GIFRFTVBMQVRFLiBJQ0VCRUFSIEFORCBUSEUgQ0FUIFdJTEwgV0lOIFRTVDI2ICovCgpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKY29uc3QgaW50IGluZiA9IChpbnQpMWU5ICsgMjcwOTIwMDg7CmNvbnN0IGxsIElORiAgPSAobGwpMWUxOCArIDI3MDkyMDA4Owpjb25zdCBpbnQgTiA9IDJlNSArIDU7CmludCBudW1Ob2RlLCBsaW1pdFNpemU7CnZlY3RvcjxpbnQ+IEdbTl07CmludCBoaWdoW05dLCB0b3VyW04gPDwgMV0sIHBvc1tOXSwgbWluSGlnaFtOIDw8IDFdWzIwXSwgdGltZXIgPSAwLCBjdXJTaXplID0gMDsKc2V0PGludD4gbm9kZXM7Cgp2b2lkIGRmcyhpbnQgdSwgaW50IHBhcikgewogICAgcG9zW3VdID0gKyt0aW1lcjsKICAgIHRvdXJbdGltZXJdID0gdTsKICAgIGZvcihpbnQgdiA6IEdbdV0pIGlmICh2ICE9IHBhcikgewogICAgICAgIGhpZ2hbdl0gPSBoaWdoW3VdICsgMTsKICAgICAgICBkZnModiwgdSk7CiAgICAgICAgdG91clsrK3RpbWVyXSA9IHU7CiAgICB9Cn0KCiNkZWZpbmUgTUlOX0hJR0goeCwgeSkgKGhpZ2hbeF0gPCBoaWdoW3ldID8geCA6IHkpCmludCBMQ0EoaW50IHUsIGludCB2KSB7CiAgICBpbnQgbCA9IHBvc1t1XSwgciA9IHBvc1t2XTsKICAgIGlmIChsID4gcikgc3dhcChsLCByKTsKICAgIGludCBrID0gX19sZyhyIC0gbCArIDEpOwogICAgcmV0dXJuIE1JTl9ISUdIKG1pbkhpZ2hbbF1ba10sIG1pbkhpZ2hbciAtIE1BU0soaykgKyAxXVtrXSk7Cn0KCnZvaWQgdXBkYXRlKGludCB1LCBpbnQgc2lnbikgewogICAgbm9kZXMuaW5zZXJ0KHBvc1t1XSk7CiAgICBhdXRvIGl0ID0gbm9kZXMuZmluZChwb3NbdV0pOwogICAgaW50IHBydiA9IChpdCA9PSBub2Rlcy5iZWdpbigpID8gdG91clsqcHJldihub2Rlcy5lbmQoKSldIDogdG91clsqcHJldihpdCldKTsKICAgIGludCBueHQgPSAobmV4dChpdCkgPT0gbm9kZXMuZW5kKCkgPyB0b3VyWypub2Rlcy5iZWdpbigpXSA6IHRvdXJbKm5leHQoaXQpXSk7CgogICAgY3VyU2l6ZSAtPSBzaWduICogKGhpZ2hbTENBKHUsIG54dCldICsgaGlnaFtMQ0EodSwgcHJ2KV0gLSBoaWdoW0xDQShwcnYsIG54dCldKTsKICAgIGN1clNpemUgKz0gc2lnbiAqIGhpZ2hbdV07CgogICAgaWYgKHNpZ24gPT0gLTEpIG5vZGVzLmVyYXNlKGl0KTsKfQoKdm9pZCBpbml0KHZvaWQpIHsKICAgIGNpbiA+PiBudW1Ob2RlID4+IGxpbWl0U2l6ZTsKICAgIEZPUihpLCAyLCBudW1Ob2RlKSB7CiAgICAgICAgaW50IHUsIHY7CiAgICAgICAgY2luID4+IHUgPj4gdjsKICAgICAgICBHW3VdLnBiKHYpOwogICAgICAgIEdbdl0ucGIodSk7CiAgICB9Cn0KCnZvaWQgcHJvY2Vzcyh2b2lkKSB7CiAgICBkZnMoMSwgLTEpOwogICAgRk9SKGksIDEsIHRpbWVyKSBtaW5IaWdoW2ldWzBdID0gdG91cltpXTsKICAgIEZPUihqLCAxLCAxOSkgRk9SKGksIDEsIHRpbWVyIC0gTUFTSyhqKSArIDEpCiAgICAgICAgbWluSGlnaFtpXVtqXSA9IE1JTl9ISUdIKG1pbkhpZ2hbaV1baiAtIDFdLCBtaW5IaWdoW2kgKyBNQVNLKGogLSAxKV1baiAtIDFdKTsKICAgIGludCBsID0gMSwgYW5zID0gMDsKICAgIEZPUihyLCAxLCBudW1Ob2RlKSB7CiAgICAgICAgdXBkYXRlKHIsICsxKTsKICAgICAgICB3aGlsZShjdXJTaXplID49IGxpbWl0U2l6ZSkgdXBkYXRlKGwrKywgLTEpOwogICAgICAgIG1heGltaXplKGFucywgciAtIGwgKyAxKTsKICAgIH0KICAgIGNvdXQgPDwgYW5zOwp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKICAgIGlmIChmb3Blbih0YXNrIi5pbnAiLCAiciIpKSB7CiAgICAgICAgZnJlb3Blbih0YXNrIi5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKHRhc2siLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGludCB0YyA9IDE7Ci8vICAgIGNpbiA+PiB0YzsKICAgIHdoaWxlKHRjLS0pIHsKICAgICAgICBpbml0KCk7CiAgICAgICAgcHJvY2VzcygpOwogICAgfQogICAgcmV0dXJuIDA7Cn0KCg==