#include <bits/stdc++.h>
#define fi first
#define si second
#define For(i,a,b) for (int i = (a), _b =(b); i <= _b; ++i)
#define all(v) v.begin(), v.end()
#define Unique(v) v.erase(unique(all(v)), v.end())
#define MASK(i) (1LL << (i))
#define bit(i,n) (((n)>>(i)) & 1)
#define Vii vector<pair<int,int>>
#define setpr(x) cout<<setprecision(x)<<fixed
#define Prior priority_queue< pair<int,int> , Vii, greater<Pair> >
using namespace std;
const int Mod = 1E9 + 7;
const long long INF = 4E18;
const int N = 2e5 + 1;
const int Log = 18;
int n,q;
vector<int> g[N];
int dp[N],dept[N],up[N][Log+2];
vector<pair<int,int>> vec[N];
void dfs_lca(int u, int p)
{
up[u][0] = p;
for(int i = 1; i <= Log; i++) up[u][i] = up[up[u][i-1]][i-1];
for(int v : g[u]) if(v != p)
{
dept[v] = dept[u] + 1;
dfs_lca(v,u);
}
}
int LCA(int u, int v)
{
if(dept[u] < dept[v]) swap(u,v);
int LenK = dept[u] - dept[v];
for(int i = Log; i >= 0; i--) if(LenK&(1<<i)) u = up[u][i];
if(u == v) return u;
for(int i = Log; i >= 0; i--) if(up[u][i] != up[v][i])
{
u = up[u][i];
v = up[v][i];
}
return up[u][0];
}
int in[N],out[N],TimeDfs = 0;
void dfs(int u, int p)
{
// in[u] = ++TimeDFS;
vec[u].push_back({0,u});
for(int v : g[u]) if(v != p)
{
dfs(v,u);
}
for(int v : g[u]) if(v !=p) vec[u].push_back({dp[v]+1,v});
sort(vec[u].begin(),vec[u].end(),greater<pair<int,int>>());
dp[u] = vec[u][0].fi;
// out[u] = ++TimeDFS;
}
void reroot(int u, int p)
{
for(int v : g[u]) if(v != p)
{ // cout << u <<' ' << v << endl;
dp[u] = vec[u][0].first;
if(dp[v] + 1 == dp[u])
{
vec[v].push_back({vec[u][1].first + 1,u});
}
else
{
dp[v] = dp[u] + 1;
vec[v].push_back({dp[u]+1,u});
}
sort(vec[v].begin(),vec[v].end(),greater<pair<int,int>>());
reroot(v,u);
}
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
//freopen("kein.inp","r",stdin)
//freopen("kein.out","w",stdout);
cin >> n >> q;
For(i,2,n)
{
int u,v;
cin >> u >> v;
g[u].push_back(v);
g[v].push_back(u);
}
dfs_lca(1,0);
dfs(1,0);
reroot(1,0);
// For(i,1,n) cout << vec[i][0].first <<' ' << vec[i][0].second << ' ' << vec[i][1].fi <<' ' << vec[i][1].si <<endl;
while(q--)
{
int u,v,node;
cin >> u >> v;
int anc = LCA(u,v);
int len = dept[u] + dept[v] - 2*dept[anc];
int k = (len+1)/2-1;
// cout << u <<' ' << v <<' '<< k <<' ' << anc << '\n';
node = v;
if(dept[v]-dept[anc] >= k)
{
for(int i = 18; i >= 0; i--)if(k&(1<<i)) node = up[node][i];
}
else
{
k = len - k;
node = u;
for(int i = 18; i >= 0; i--)if(k&(1<<i)) node = up[node][i];
}
// cout <<"GG " << node << endl;
for(auto [Max,Node] : vec[node])
{ //cout << Max <<' ' << Node << endl;
int ancestor = LCA(node,Node)^LCA(u,node)^LCA(u,Node);
// cout << ancestor << endl;
if(ancestor == node)
{
// cout << Max << endl;
cout << dept[node] + dept[u] - 2*dept[LCA(u,node)]+ Max <<'\n';
break;
}
}
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAKI2RlZmluZSBmaSAgICAgICAgICAgZmlyc3QgCiNkZWZpbmUgc2kgICAgICAgICAgIHNlY29uZCAKI2RlZmluZSBGb3IoaSxhLGIpICAgZm9yIChpbnQgaSA9IChhKSwgX2IgPShiKTsgaSA8PSBfYjsgKytpKQojZGVmaW5lIGFsbCh2KSAgICAgICB2LmJlZ2luKCksIHYuZW5kKCkKI2RlZmluZSBVbmlxdWUodikgICAgdi5lcmFzZSh1bmlxdWUoYWxsKHYpKSwgdi5lbmQoKSkgICAKI2RlZmluZSBNQVNLKGkpICAgICAgKDFMTCA8PCAoaSkpCiNkZWZpbmUgYml0KGksbikgICAgICgoKG4pPj4oaSkpICYgMSkKI2RlZmluZSBWaWkgICAgICAgICAgdmVjdG9yPHBhaXI8aW50LGludD4+CiNkZWZpbmUgc2V0cHIoeCkgICAgIGNvdXQ8PHNldHByZWNpc2lvbih4KTw8Zml4ZWQKI2RlZmluZSBQcmlvciAgICAgICAgcHJpb3JpdHlfcXVldWU8IHBhaXI8aW50LGludD4gLCBWaWksIGdyZWF0ZXI8UGFpcj4gPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmNvbnN0IGludCBNb2QgPSAxRTkgKyA3Owpjb25zdCBsb25nIGxvbmcgSU5GICA9IDRFMTg7CmNvbnN0IGludCBOID0gMmU1ICsgMTsKY29uc3QgaW50IExvZyA9IDE4OwppbnQgbixxOwp2ZWN0b3I8aW50PiBnW05dOwppbnQgZHBbTl0sZGVwdFtOXSx1cFtOXVtMb2crMl07CnZlY3RvcjxwYWlyPGludCxpbnQ+PiB2ZWNbTl07CnZvaWQgZGZzX2xjYShpbnQgdSwgaW50IHApCnsgICAKICAgIHVwW3VdWzBdID0gcDsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gTG9nOyBpKyspIHVwW3VdW2ldID0gdXBbdXBbdV1baS0xXV1baS0xXTsKICAgIGZvcihpbnQgdiA6IGdbdV0pIGlmKHYgIT0gcCkKICAgIHsgICAKICAgICAgICBkZXB0W3ZdID0gZGVwdFt1XSArIDE7CiAgICAgICAgZGZzX2xjYSh2LHUpOwogICAgfQp9CmludCBMQ0EoaW50IHUsIGludCB2KQp7ICAgCiAgICBpZihkZXB0W3VdIDwgZGVwdFt2XSkgc3dhcCh1LHYpOwogICAgaW50IExlbksgPSBkZXB0W3VdIC0gZGVwdFt2XTsKICAgIGZvcihpbnQgaSA9IExvZzsgaSA+PSAwOyBpLS0pIGlmKExlbksmKDE8PGkpKSB1ID0gdXBbdV1baV07CiAgICBpZih1ID09IHYpIHJldHVybiB1OwogICAgZm9yKGludCBpID0gTG9nOyBpID49IDA7IGktLSkgaWYodXBbdV1baV0gIT0gdXBbdl1baV0pCiAgICB7CiAgICAgICAgdSA9IHVwW3VdW2ldOwogICAgICAgIHYgPSB1cFt2XVtpXTsKICAgIH0KICAgIHJldHVybiB1cFt1XVswXTsKfQppbnQgaW5bTl0sb3V0W05dLFRpbWVEZnMgPSAwOwp2b2lkIGRmcyhpbnQgdSwgaW50IHApCnsgICAKICAgIC8vIGluW3VdID0gKytUaW1lREZTOwogICAgdmVjW3VdLnB1c2hfYmFjayh7MCx1fSk7CiAgICBmb3IoaW50IHYgOiBnW3VdKSBpZih2ICE9IHApCiAgICB7CiAgICAgICAgZGZzKHYsdSk7CiAgICB9CiAgICBmb3IoaW50IHYgOiBnW3VdKSBpZih2ICE9cCkgdmVjW3VdLnB1c2hfYmFjayh7ZHBbdl0rMSx2fSk7CiAgICBzb3J0KHZlY1t1XS5iZWdpbigpLHZlY1t1XS5lbmQoKSxncmVhdGVyPHBhaXI8aW50LGludD4+KCkpOwogICAgZHBbdV0gPSB2ZWNbdV1bMF0uZmk7CiAgICAvLyBvdXRbdV0gPSArK1RpbWVERlM7Cn0Kdm9pZCByZXJvb3QoaW50IHUsIGludCBwKQp7CiAgICBmb3IoaW50IHYgOiBnW3VdKSBpZih2ICE9IHApCiAgICB7ICAvLyBjb3V0IDw8IHUgPDwnICcgPDwgdiA8PCBlbmRsOwogICAgICAgIGRwW3VdID0gdmVjW3VdWzBdLmZpcnN0OwogICAgICAgIGlmKGRwW3ZdICsgMSA9PSBkcFt1XSkKICAgICAgICB7CiAgICAgICAgICAgIHZlY1t2XS5wdXNoX2JhY2soe3ZlY1t1XVsxXS5maXJzdCArIDEsdX0pOwogICAgICAgIH0KICAgICAgICBlbHNlIAogICAgICAgIHsgICAKICAgICAgICAgICAgZHBbdl0gPSBkcFt1XSArIDE7CiAgICAgICAgICAgIHZlY1t2XS5wdXNoX2JhY2soe2RwW3VdKzEsdX0pOwogICAgICAgIH0KICAgICAgICBzb3J0KHZlY1t2XS5iZWdpbigpLHZlY1t2XS5lbmQoKSxncmVhdGVyPHBhaXI8aW50LGludD4+KCkpOwogICAgICAgIHJlcm9vdCh2LHUpOwogICAgfQp9CnNpZ25lZCBtYWluKCl7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKICAgIC8vZnJlb3Blbigia2Vpbi5pbnAiLCJyIixzdGRpbikKICAgIC8vZnJlb3Blbigia2Vpbi5vdXQiLCJ3IixzdGRvdXQpOwogICAgY2luID4+IG4gPj4gcTsKICAgIEZvcihpLDIsbikKICAgIHsKICAgICAgICBpbnQgdSx2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CiAgICAgICAgZ1t1XS5wdXNoX2JhY2sodik7CiAgICAgICAgZ1t2XS5wdXNoX2JhY2sodSk7CiAgICB9CiAgICBkZnNfbGNhKDEsMCk7CiAgICBkZnMoMSwwKTsKICAgIHJlcm9vdCgxLDApOwogICAvLyBGb3IoaSwxLG4pIGNvdXQgPDwgdmVjW2ldWzBdLmZpcnN0IDw8JyAnIDw8IHZlY1tpXVswXS5zZWNvbmQgPDwgICcgJyA8PCB2ZWNbaV1bMV0uZmkgPDwnICcgPDwgdmVjW2ldWzFdLnNpIDw8ZW5kbDsKICAgd2hpbGUocS0tKQogICB7CiAgICAgICAgaW50IHUsdixub2RlOwogICAgICAgIGNpbiA+PiB1ID4+IHY7CiAgICAgICAgaW50IGFuYyA9IExDQSh1LHYpOwogICAgICAgIGludCBsZW4gPSBkZXB0W3VdICsgZGVwdFt2XSAtIDIqZGVwdFthbmNdOwogICAgICAgIGludCBrID0gKGxlbisxKS8yLTE7CiAgICAgIC8vICBjb3V0IDw8IHUgPDwnICcgPDwgdiA8PCcgJzw8IGsgPDwnICcgPDwgYW5jIDw8ICdcbic7CiAgICAgICAgbm9kZSA9IHY7CiAgICAgICAgaWYoZGVwdFt2XS1kZXB0W2FuY10gPj0gaykKICAgICAgICB7CiAgICAgICAgICAgIGZvcihpbnQgaSA9IDE4OyBpID49IDA7IGktLSlpZihrJigxPDxpKSkgbm9kZSA9IHVwW25vZGVdW2ldOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBrID0gbGVuIC0gazsKICAgICAgICAgICAgbm9kZSA9IHU7CiAgICAgICAgICAgIGZvcihpbnQgaSA9IDE4OyBpID49IDA7IGktLSlpZihrJigxPDxpKSkgbm9kZSA9IHVwW25vZGVdW2ldOwogICAgICAgIH0KICAgICAgIC8vIGNvdXQgPDwiR0cgIiA8PCBub2RlIDw8IGVuZGw7CiAgICAgICAgZm9yKGF1dG8gW01heCxOb2RlXSA6IHZlY1tub2RlXSkKICAgICAgICB7ICAgLy9jb3V0IDw8IE1heCA8PCcgJyA8PCBOb2RlIDw8IGVuZGw7CiAgICAgICAgICAgIGludCBhbmNlc3RvciA9IExDQShub2RlLE5vZGUpXkxDQSh1LG5vZGUpXkxDQSh1LE5vZGUpOwogICAgICAgICAgIC8vIGNvdXQgPDwgYW5jZXN0b3IgPDwgZW5kbDsKICAgICAgICAgICAgaWYoYW5jZXN0b3IgPT0gbm9kZSkgCiAgICAgICAgICAgIHsgICAKICAgICAgICAgICAgICAgLy8gY291dCA8PCBNYXggPDwgZW5kbDsKICAgICAgICAgICAgICAgIGNvdXQgPDwgZGVwdFtub2RlXSArIGRlcHRbdV0gLSAyKmRlcHRbTENBKHUsbm9kZSldKyBNYXggPDwnXG4nOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgIH0KfQ==