#include <bits/stdc++.h>
using namespace std;
const int maxn = 100005;
const int maxm = 500005;
int n, m, i, j, t, k, s, N, head[maxn], Head[maxn << 1];
int dfn[maxn], low[maxn], ti, tp, stk[maxn], tot;
int dep[maxn << 1], Log[maxn << 1], fa[maxn << 1][21];
struct Edge {
  int nxt, aim;
} edge[(maxm << 1) + (maxn << 2)];
inline void add_edge(int x, int y) {
  edge[++N] = (Edge){head[x], y};
  head[x] = N;
  edge[++N] = (Edge){head[y], x};
  head[y] = N;
}
inline void Add_Edge(int x, int y) {
  edge[++N] = (Edge){Head[x], y};
  Head[x] = N;
  edge[++N] = (Edge){Head[y], x};
  Head[y] = N;
}
void dfs1(int x, int y) {
  dfn[x] = low[x] = ++ti;
  stk[++tp] = x;
  for (int i = head[x]; i; i = edge[i].nxt) {
    int des = edge[i].aim;
    if (des == y) continue;
    if (dfn[des])
      low[x] = min(low[x], dfn[des]);
    else {
      dfs1(des, x);
      if (low[des] >= dfn[x]) {
        ++tot;
        while (stk[tp] != des) {
          Add_Edge(stk[tp], tot);
          --tp;
        }
        Add_Edge(des, tot);
        Add_Edge(x, tot);
        --tp;
      } else
        low[x] = min(low[x], low[des]);
    }
  }
}
void dfs2(int x, int y) {
  dep[x] = dep[y] + 1;
  for (int i = Head[x]; i; i = edge[i].nxt) {
    int des = edge[i].aim;
    if (des == y) continue;
    fa[des][0] = x;
    for (int j = 1; j <= Log[tot]; ++j) fa[des][j] = fa[fa[des][j - 1]][j - 1];
    dfs2(des, x);
  }
}
inline int LCA(int x, int y) {
  if (dep[x] < dep[y]) swap(x, y);
  for (int i = Log[dep[x] - dep[y]]; ~i; --i)
    if (dep[fa[x][i]] >= dep[y]) x = fa[x][i];
  if (x == y) return x;
  for (int i = Log[dep[x]]; ~i; --i)
    if (fa[x][i] != fa[y][i]) x = fa[x][i], y = fa[y][i];
  return fa[x][0];
}
int main() {
  int T;
  scanf("%d%d%d", &n, &m, &T);
  tot = n;
  for (i = 1; i <= m; ++i) {
    scanf("%d%d", &t, &k);
    add_edge(t, k);
  }
  dfs1(1, 0);
  for (i = 2; i < (maxn << 1); ++i) Log[i] = Log[i >> 1] + 1;
  for (i = 0; i <= Log[tot]; ++i) fa[1][i] = 1;
  dfs2(1, 0);
  while (T--) {
    scanf("%d%d", &t, &k);
    j = LCA(t, k);
    s = dep[t] / 2 + dep[k] / 2 - dep[j] / 2 - (dep[j] - 1) / 2;
    printf("%d\n", s);
  }
  return 0;
}
