#include <bits/stdc++.h>
using namespace std;
template <typename T>
void read(T &n) {
  n = 0;
  T f = 1;
  char c = getchar();
  while (!isdigit(c) && c != '-') c = getchar();
  if (c == '-') f = -1, c = getchar();
  while (isdigit(c)) n = n * 10 + c - '0', c = getchar();
  n *= f;
}
template <typename T>
void write(T n) {
  if (n < 0) putchar('-'), n = -n;
  if (n > 9) write(n / 10);
  putchar(n % 10 + '0');
}
vector<int> son[400005];
int n, m, q, tot, cnt, num;
int head[400005], vet[2000005], Next[2000005];
int f[400005][20], id[400005], s[400005], d[400005];
int low[400005], dfn[400005], st[400005], top, T;
void add(int x, int y) {
  cnt++;
  Next[cnt] = head[x];
  head[x] = cnt;
  vet[cnt] = y;
}
void tarjan(int x) {
  low[x] = dfn[x] = ++T;
  st[++top] = x;
  for (int i = head[x]; i; i = Next[i]) {
    int v = vet[i];
    if (!dfn[v]) {
      tarjan(v);
      low[x] = min(low[x], low[v]);
      if (low[v] == dfn[x]) {
        tot++;
        int t = -1;
        while (t != v) {
          t = st[top--];
          son[tot].push_back(t);
          son[t].push_back(tot);
        }
        son[tot].push_back(x);
        son[x].push_back(tot);
      }
    } else
      low[x] = min(low[x], dfn[v]);
  }
}
void dfs(int x, int pre) {
  d[x] = d[pre] + 1, id[x] = ++num;
  for (int i = 1; i <= 19; ++i) {
    f[x][i] = f[f[x][i - 1]][i - 1];
  }
  for (int i = 0; i < son[x].size(); ++i) {
    int v = son[x][i];
    if (v == pre) continue;
    f[v][0] = x;
    s[v] = s[x] + 1;
    dfs(v, x);
  }
}
int lca(int x, int y) {
  if (d[x] < d[y]) swap(x, y);
  for (int i = 19; i >= 0; --i) {
    if (d[f[x][i]] >= d[y]) x = f[x][i];
  }
  if (x == y) return x;
  for (int i = 19; i >= 0; --i) {
    if (f[x][i] != f[y][i]) x = f[x][i], y = f[y][i];
  }
  return f[x][0];
}
int main() {
  cin >> n >> m >> q;
  tot = n;
  int x, y;
  for (int i = 1; i <= m; ++i) {
    read(x), read(y);
    add(x, y), add(y, x);
  }
  for (int i = 1; i <= tot; ++i) {
    if (!dfn[i]) tarjan(i);
  }
  dfs(1, 0);
  while (q--) {
    read(x), read(y);
    int ans = s[x] + s[y] - 2 * s[lca(x, y)];
    write(ans / 2), puts("");
  }
  return 0;
}
