#include<cstdio>
#include<bitset>
#include<queue>
#include<algorithm>
#include<cstring>
#define N 1009
using namespace std;
int n,m,q,head[N],to[N],nxt[N],tot,a,dis[N];
bitset<N>fifi[N][N];
void add(int u,int v){
to[++tot]=v;
nxt[tot]=head[u];
head[u]=tot;
}
void bfs(int &s){
memset(dis,0x3f,sizeof(dis));
queue<int >q;
q.push(s);dis[s]=0;
while(!q.empty()){
int x=q.front();q.pop();
for(int i=head[x];i;i=nxt[i]){
int y=to[i];
if(dis[y]==dis[0])dis[y]=dis[x]+1,q.push(y);
}
}
}
signed main(){
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=m;i++){
int x,y;
scanf("%d%d",&x,&y);
add(x,y);add(y,x);
}
for(int i=1;i<=n;i++){
bfs(i);
for(int j=1;j<=n;j++)if(dis[j]!=dis[0])fifi[i][dis[j]][j]=1;
for(int j=1;j<=n;j++)fifi[i][j]|=fifi[i][j-1];
}
while(q--){
scanf("%d",&a);bitset<N>ans;
while(a--){
int x,y;scanf("%d%d",&x,&y);
ans|=fifi[x][y];
}
printf("%d\n",ans.count());
}
return 0;
}