/*哈哈我Tarjan套lca.. 丫输出case啥的没看见...*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 300010
using namespace std;
int n,m,num,head[maxn],low[maxn],dfn[maxn],topt;
int s[maxn],top,f[maxn],sum,belong[maxn],cnt,cas;
int Num,Head[maxn],fa[maxn],c[maxn],ee[maxn],vis[maxn];
struct node{int v,pre;}e[maxn*2];
struct Node{int v,pre;}E[maxn*2];
void Add(int from,int to)
{
e[num].v=to;
e[num].pre=head[from];
head[from]=num++;
}
void add(int from,int to)
{
E[Num].v=to;
E[Num].pre=Head[from];
Head[from]=Num++;
}
void Tarjan(int x,int fa)
{
low[x]=dfn[x]=++topt;
s[++top]=x;f[x]=1;
for(int i=head[x];i!=-1;i=e[i].pre)
{
int v=e[i].v;
if(i==(fa^1))continue;
if(dfn[v]==0)
{
Tarjan(v,i);low[x]=min(low[x],low[v]);
}
else if(f[v])low[x]=min(low[x],dfn[v]);
}
if(low[x]==dfn[x])
{
sum++;
while(x!=s[top])
{
f[s[top]]=0;belong[s[top]]=sum;top--;
}
f[s[top]]=0;belong[s[top]]=sum;top--;
}
}
void Dfs(int now,int from,int dep,int Ei)
{
fa[now]=from;c[now]=dep;ee[now]=Ei;
for(int i=Head[now];i!=-1;i=E[i].pre)
if(E[i].v!=from)
Dfs(E[i].v,now,dep+1,i);
}
void LCA(int a,int b)
{
if(c[a]<c[b])swap(a,b);
int t=c[a]-c[b];
for(int i=1;i<=t;i++)
{
if(vis[ee[a]]==0)cnt--;
vis[ee[a]]=1;a=fa[a];
}
while(a!=b)
{
if(vis[ee[a]]==0)cnt--;
vis[ee[a]]=1;a=fa[a];
if(vis[ee[b]]==0)cnt--;
vis[ee[b]]=1;b=fa[b];
}
}
int main()
{
while(1)
{
scanf("%d%d",&n,&m);
if(n==0&&m==0)break;
memset(head,-1,sizeof(head));
memset(Head,-1,sizeof(Head));
memset(low,0,sizeof(low));
memset(dfn,0,sizeof(dfn));
memset(f,0,sizeof(f));
memset(belong,0,sizeof(belong));
memset(vis,0,sizeof(vis));
memset(c,0,sizeof(c));
memset(ee,0,sizeof(ee));
memset(fa,0,sizeof(fa));
memset(s,0,sizeof(s));
Num=num=topt=sum=0;
int u,v;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&u,&v);
Add(u,v);Add(v,u);
}
for(int i=1;i<=n;i++)
if(dfn[i]==0)
Tarjan(i,-1);
for(int u=1;u<=n;u++)
for(int i=head[u];i!=-1;i=e[i].pre)
if(belong[u]!=belong[e[i].v])
add(belong[u],belong[e[i].v]);
Dfs(1,1,0,0);cnt=sum-1;
scanf("%d",&m);
printf("Case %d:\n",++cas);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&u,&v);
int U=belong[u];
int V=belong[v];
if(U==V)
{
printf("%d\n",cnt);continue;
}
LCA(U,V);
printf("%d\n",cnt);
}
}
return 0;
}