#include<bits/stdc++.h>
//#define int unsigned long long
#define long long int
//const int mod=1000000007;
const int mn=100005;
using namespace std;
int anc[mn],n,m,ans,dep[mn];
bool vis[mn];
vector<int> q[mn],a[mn];
int dfs(int u,int fa,int d){
dep[u]=d;
for(int i=0;i<a[u].size();i++){
int v=a[u][i];
if(v==fa) continue;
dfs(v,u,d+1);
}
return 0;
}
int find(int x){
if(x==anc[x]) return x;
anc[x]=find(anc[x]);
return anc[x];
}
void lca(int u,int fa){
for(int i=0;i<a[u].size();i++){
if(a[u][i]==fa) continue;
lca(a[u][i],u);
}
for(int i=0;i<q[u].size();i++){
int e=q[u][i];
if(vis[e]) {
int r=find(e);
cout<<dep[e]+dep[u]-2*dep[r]<<'\n';
}
}
anc[u]=find(fa);
vis[u]=true;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
anc[i]=i;
for(int i=1;i<n;i++) {
int u,v;
cin>>v>>u;
a[v].push_back(u);
a[u].push_back(v);
}
cin>>m;
for(int i=1;i<=m;i++) {
int u,v;
cin>>v>>u;
q[u].push_back(v);
q[v].push_back(u);
}
dfs(1,1,1);
lca(1,1);
return 0;
}
```c++
```