#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 2e5 + 5;
const int LOG = 18;
int n, q;
vector<int> adj[N];
int up[LOG][N];
int tin[N], tout[N], timer;
int depth[N]; // depth[u] = Độ sâu của đỉnh u
void dfs(int u, int p) {
tin[u] = ++timer;
up[0][u] = p;
for (int i = 1; i < LOG; i++) {
up[i][u] = up[i - 1][up[i - 1][u]];
}
for (int v : adj[u]) {
if (v == p) continue;
depth[v] = depth[u] + 1;
dfs(v, u);
}
tout[u] = timer;
}
bool isAncestor(int u, int v) {
return (tin[u] <= tin[v] && tout[v] <= tout[u]);
}
int lca(int u, int v) {
if (isAncestor(u, v)) return u;
if (isAncestor(v, u)) return v;
for (int i = LOG - 1; i >= 0; i--) {
if (!isAncestor(up[i][u], v)) {
u = up[i][u];
}
}
return up[0][u];
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> q;
for (int i = 0; i < n - 1; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
timer = 0;
depth[1] = 0;
dfs(1, 1);
while (q--) {
int u, v;
cin >> u >> v;
int dist = depth[u] + depth[v] - 2 * depth[lca(u, v)];
cout << dist << '\n';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSAyZTUgKyA1OyAgCmNvbnN0IGludCBMT0cgPSAxODsgICAKCmludCBuLCBxOyAgCnZlY3RvcjxpbnQ+IGFkaltOXTsgCgppbnQgdXBbTE9HXVtOXTsgCmludCB0aW5bTl0sIHRvdXRbTl0sIHRpbWVyOyAgCmludCBkZXB0aFtOXTsgLy8gZGVwdGhbdV0gPSDEkOG7mSBzw6J1IGPhu6dhIMSR4buJbmggdQoKdm9pZCBkZnMoaW50IHUsIGludCBwKSB7Cgl0aW5bdV0gPSArK3RpbWVyOyAgCgl1cFswXVt1XSA9IHA7ICAKCWZvciAoaW50IGkgPSAxOyBpIDwgTE9HOyBpKyspIHsKCQl1cFtpXVt1XSA9IHVwW2kgLSAxXVt1cFtpIC0gMV1bdV1dOyAKCX0KCWZvciAoaW50IHYgOiBhZGpbdV0pIHsKCQlpZiAodiA9PSBwKSBjb250aW51ZTsgIAoJCWRlcHRoW3ZdID0gZGVwdGhbdV0gKyAxOyAKCQlkZnModiwgdSk7IAoJfQoJdG91dFt1XSA9IHRpbWVyOyAgCn0KCmJvb2wgaXNBbmNlc3RvcihpbnQgdSwgaW50IHYpIHsKCXJldHVybiAodGluW3VdIDw9IHRpblt2XSAmJiB0b3V0W3ZdIDw9IHRvdXRbdV0pOyAKfQoKaW50IGxjYShpbnQgdSwgaW50IHYpIHsKCWlmIChpc0FuY2VzdG9yKHUsIHYpKSByZXR1cm4gdTsgCglpZiAoaXNBbmNlc3Rvcih2LCB1KSkgcmV0dXJuIHY7ICAKCWZvciAoaW50IGkgPSBMT0cgLSAxOyBpID49IDA7IGktLSkgewoJCWlmICghaXNBbmNlc3Rvcih1cFtpXVt1XSwgdikpIHsKCQkJdSA9IHVwW2ldW3VdOyAKCQl9Cgl9CglyZXR1cm4gdXBbMF1bdV07IAp9CgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgCgljaW4udGllKG51bGxwdHIpOyAJCgljaW4gPj4gbiA+PiBxOyAKCglmb3IgKGludCBpID0gMDsgaSA8IG4gLSAxOyBpKyspIHsKCQlpbnQgdSwgdjsgCgkJY2luID4+IHUgPj4gdjsgCgkJYWRqW3VdLnB1c2hfYmFjayh2KTsgCgkJYWRqW3ZdLnB1c2hfYmFjayh1KTsgCgl9CgoJdGltZXIgPSAwOyAgCglkZXB0aFsxXSA9IDA7IAoJZGZzKDEsIDEpOyAgCgoJd2hpbGUgKHEtLSkgewoJCWludCB1LCB2OwoJCWNpbiA+PiB1ID4+IHY7IAoJCWludCBkaXN0ID0gZGVwdGhbdV0gKyBkZXB0aFt2XSAtIDIgKiBkZXB0aFtsY2EodSwgdildOyAKCQljb3V0IDw8IGRpc3QgPDwgJ1xuJzsgCgl9Cn0=