//NiceDuck
#include "bits/stdc++.h"
typedef long long ll;
using namespace std;
#define FILE "000"
#define foru(i,a,b) for(int i=(int)(a); i<=(int)(b); ++i)
#define ford(i,a,b) for(int i=(int)(a); i>=(int)(b); --i)
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);
#define pb push_back
#define fi first
#define se second
#define el "\n"
#define MASK(i) (1LL<<(i))
#define BIT(i,j) (((i)>>(j))&1)
#define TIME 1.0*clock()/CLOCKS_PER_SEC
#define LOG 20
const ll MAX=1e5+5;
int n,m,q;
vector<pair<int,int> > adj[MAX];
int compCount,compID[MAX];
stack<int> st;
int timer=0,low[MAX],num[MAX];
void dfs(int u, int id)
{
num[u]=low[u]=++timer;
st.push(u);
for(pair<int,int> pa:adj[u])
{
int v=pa.fi, idx=pa.se;
if(idx==id) continue;
if(num[v]) low[u]=min(low[u],num[v]);
else
{
dfs(v,idx);
low[u]=min(low[u],low[v]);
if(low[v]>num[u])
{
++compCount;
while(true)
{
int t=st.top(); st.pop();
compID[t]=compCount;
if(t==v) break;
}
}
}
}
}
vector<pair<int,int> > adjTree[MAX];
int logn,h[MAX],jump[LOG][MAX],dist[LOG][MAX];
void dfs1(int u, int p)
{
for(pair<int,int> pa:adjTree[u])
{
int v=pa.fi, w=pa.se;
if(v==p) continue;
h[v]=h[u]+1;
jump[0][v]=u;
dist[0][v]=w;
dfs1(v,u);
}
}
void buildLCA()
{
dfs1(1,0);
logn=31-__builtin_clz(compCount);
foru(j,1,logn)
{
foru(i,1,compCount)
{
int t=jump[j-1][i];
jump[j][i]=jump[j-1][t];
dist[j][i]=dist[j-1][i]+dist[j-1][t];
}
}
}
void pre()
{
dfs(1,0);
if(!st.empty())
{
++compCount;
while(!st.empty())
{
int u=st.top(); st.pop();
compID[u]=compCount;
}
}
foru(i,1,n)
{
for(pair<int,int> pa:adj[i])
{
int j=pa.fi;
int u=compID[i], v=compID[j];
if(u!=v) adjTree[u].pb({v,1});
}
}
buildLCA();
}
int calc(int u, int v)
{
u=compID[u]; v=compID[v];
if(u==v) return 0;
if(h[u]>h[v]) swap(u,v);
int k=h[v]-h[u],ans=0;
// cout<<u<<' '<<v<<' '<<k<<el;
ford(j,logn,0)
{
if(BIT(k,j))
{
ans+=dist[j][v];
v=jump[j][v];
// cout<<j<<' '<<v<<el;
}
}
// cout<<el;
// cout<<u<<' '<<v<<el;
if(u==v) return ans;
ford(j,logn,0)
{
if(jump[j][u]!=jump[j][v])
{
ans+=dist[j][v]+dist[j][u];
u=jump[j][u]; v=jump[j][v];
}
}
return ans+dist[0][u]+dist[0][v];
}
int main()
{
fastio
if(fopen(FILE ".inp","r"))
{
freopen(FILE ".inp","r",stdin); freopen(FILE ".out","w",stdout);
}
cin>>n>>m;
foru(i,1,m)
{
int u,v; cin>>u>>v;
adj[u].pb({v,i});
adj[v].pb({u,i});
}
pre();
cin>>q;
while(q--)
{
int u,v; cin>>u>>v;
cout<<calc(u,v)<<el;
}
return 0;
}
Ly9OaWNlRHVjawojaW5jbHVkZSAiYml0cy9zdGRjKysuaCIKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgRklMRSAiMDAwIgojZGVmaW5lIGZvcnUoaSxhLGIpIGZvcihpbnQgaT0oaW50KShhKTsgaTw9KGludCkoYik7ICsraSkKI2RlZmluZSBmb3JkKGksYSxiKSBmb3IoaW50IGk9KGludCkoYSk7IGk+PShpbnQpKGIpOyAtLWkpCiNkZWZpbmUgZmFzdGlvIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7Y2luLnRpZSgwKTsKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGVsICJcbiIKI2RlZmluZSBNQVNLKGkpICgxTEw8PChpKSkKI2RlZmluZSBCSVQoaSxqKSAoKChpKT4+KGopKSYxKQojZGVmaW5lIFRJTUUgMS4wKmNsb2NrKCkvQ0xPQ0tTX1BFUl9TRUMKI2RlZmluZSBMT0cgMjAKCmNvbnN0IGxsIE1BWD0xZTUrNTsKaW50IG4sbSxxOwp2ZWN0b3I8cGFpcjxpbnQsaW50PiA+IGFkaltNQVhdOwoKaW50IGNvbXBDb3VudCxjb21wSURbTUFYXTsKc3RhY2s8aW50PiBzdDsKaW50IHRpbWVyPTAsbG93W01BWF0sbnVtW01BWF07CnZvaWQgZGZzKGludCB1LCBpbnQgaWQpCnsKICAgIG51bVt1XT1sb3dbdV09Kyt0aW1lcjsKICAgIHN0LnB1c2godSk7CiAgICBmb3IocGFpcjxpbnQsaW50PiBwYTphZGpbdV0pCiAgICB7CiAgICAgICAgaW50IHY9cGEuZmksIGlkeD1wYS5zZTsKICAgICAgICBpZihpZHg9PWlkKSBjb250aW51ZTsKICAgICAgICBpZihudW1bdl0pIGxvd1t1XT1taW4obG93W3VdLG51bVt2XSk7CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgZGZzKHYsaWR4KTsKICAgICAgICAgICAgbG93W3VdPW1pbihsb3dbdV0sbG93W3ZdKTsKICAgICAgICAgICAgaWYobG93W3ZdPm51bVt1XSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgKytjb21wQ291bnQ7CiAgICAgICAgICAgICAgICB3aGlsZSh0cnVlKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGludCB0PXN0LnRvcCgpOyBzdC5wb3AoKTsKICAgICAgICAgICAgICAgICAgICBjb21wSURbdF09Y29tcENvdW50OwogICAgICAgICAgICAgICAgICAgIGlmKHQ9PXYpIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CnZlY3RvcjxwYWlyPGludCxpbnQ+ID4gYWRqVHJlZVtNQVhdOwppbnQgbG9nbixoW01BWF0sanVtcFtMT0ddW01BWF0sZGlzdFtMT0ddW01BWF07CnZvaWQgZGZzMShpbnQgdSwgaW50IHApCnsKICAgIGZvcihwYWlyPGludCxpbnQ+IHBhOmFkalRyZWVbdV0pCiAgICB7CiAgICAgICAgaW50IHY9cGEuZmksIHc9cGEuc2U7CiAgICAgICAgaWYodj09cCkgY29udGludWU7CiAgICAgICAgaFt2XT1oW3VdKzE7CiAgICAgICAganVtcFswXVt2XT11OwogICAgICAgIGRpc3RbMF1bdl09dzsKICAgICAgICBkZnMxKHYsdSk7CiAgICB9Cn0KCnZvaWQgYnVpbGRMQ0EoKQp7CiAgICBkZnMxKDEsMCk7CiAgICBsb2duPTMxLV9fYnVpbHRpbl9jbHooY29tcENvdW50KTsKICAgIGZvcnUoaiwxLGxvZ24pCiAgICB7CiAgICAgICAgZm9ydShpLDEsY29tcENvdW50KQogICAgICAgIHsKICAgICAgICAgICAgaW50IHQ9anVtcFtqLTFdW2ldOwogICAgICAgICAgICBqdW1wW2pdW2ldPWp1bXBbai0xXVt0XTsKICAgICAgICAgICAgZGlzdFtqXVtpXT1kaXN0W2otMV1baV0rZGlzdFtqLTFdW3RdOwogICAgICAgIH0KICAgIH0KfQoKdm9pZCBwcmUoKQp7CiAgICBkZnMoMSwwKTsKICAgIGlmKCFzdC5lbXB0eSgpKQogICAgewogICAgICAgICsrY29tcENvdW50OwogICAgICAgIHdoaWxlKCFzdC5lbXB0eSgpKQogICAgICAgIHsKICAgICAgICAgICAgaW50IHU9c3QudG9wKCk7IHN0LnBvcCgpOwogICAgICAgICAgICBjb21wSURbdV09Y29tcENvdW50OwogICAgICAgIH0KICAgIH0KICAgIGZvcnUoaSwxLG4pCiAgICB7CiAgICAgICAgZm9yKHBhaXI8aW50LGludD4gcGE6YWRqW2ldKQogICAgICAgIHsKICAgICAgICAgICAgaW50IGo9cGEuZmk7CiAgICAgICAgICAgIGludCB1PWNvbXBJRFtpXSwgdj1jb21wSURbal07CiAgICAgICAgICAgIGlmKHUhPXYpIGFkalRyZWVbdV0ucGIoe3YsMX0pOwogICAgICAgIH0KICAgIH0KICAgIGJ1aWxkTENBKCk7Cn0KCmludCBjYWxjKGludCB1LCBpbnQgdikKewogICAgdT1jb21wSURbdV07IHY9Y29tcElEW3ZdOwogICAgaWYodT09dikgcmV0dXJuIDA7CiAgICBpZihoW3VdPmhbdl0pIHN3YXAodSx2KTsKICAgIGludCBrPWhbdl0taFt1XSxhbnM9MDsKLy8gICAgY291dDw8dTw8JyAnPDx2PDwnICc8PGs8PGVsOwogICAgZm9yZChqLGxvZ24sMCkKICAgIHsKICAgICAgICBpZihCSVQoayxqKSkKICAgICAgICB7CiAgICAgICAgICAgIGFucys9ZGlzdFtqXVt2XTsKICAgICAgICAgICAgdj1qdW1wW2pdW3ZdOwovLyAgICAgICAgICAgIGNvdXQ8PGo8PCcgJzw8djw8ZWw7CiAgICAgICAgfQogICAgfQovLyAgICBjb3V0PDxlbDsKLy8gICAgY291dDw8dTw8JyAnPDx2PDxlbDsKICAgIGlmKHU9PXYpIHJldHVybiBhbnM7CiAgICBmb3JkKGosbG9nbiwwKQogICAgewogICAgICAgIGlmKGp1bXBbal1bdV0hPWp1bXBbal1bdl0pCiAgICAgICAgewogICAgICAgICAgICBhbnMrPWRpc3Rbal1bdl0rZGlzdFtqXVt1XTsKICAgICAgICAgICAgdT1qdW1wW2pdW3VdOyB2PWp1bXBbal1bdl07CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGFucytkaXN0WzBdW3VdK2Rpc3RbMF1bdl07Cn0KCmludCBtYWluKCkKewogICAgZmFzdGlvCiAgICBpZihmb3BlbihGSUxFICIuaW5wIiwiciIpKQogICAgewogICAgICAgIGZyZW9wZW4oRklMRSAiLmlucCIsInIiLHN0ZGluKTsgZnJlb3BlbihGSUxFICIub3V0IiwidyIsc3Rkb3V0KTsKICAgIH0KICAgIGNpbj4+bj4+bTsKICAgIGZvcnUoaSwxLG0pCiAgICB7CiAgICAgICAgaW50IHUsdjsgY2luPj51Pj52OwogICAgICAgIGFkalt1XS5wYih7dixpfSk7CiAgICAgICAgYWRqW3ZdLnBiKHt1LGl9KTsKICAgIH0KICAgIHByZSgpOwogICAgY2luPj5xOwogICAgd2hpbGUocS0tKQogICAgewogICAgICAgIGludCB1LHY7IGNpbj4+dT4+djsKICAgICAgICBjb3V0PDxjYWxjKHUsdik8PGVsOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==