#include <bits/stdc++.h>
using namespace std;
struct node {
  int x, y, next;
} e[1100000];
int elen, elast[110000];
void eins(int x, int y) {
  elen++;
  e[elen].x = x;
  e[elen].y = y;
  e[elen].next = elast[x];
  elast[x] = elen;
}
int z, dfn[110000], low[110000];
int top, sta[110000];
int cnt;
vector<int> vec[110000];
void V_DCC(int x) {
  dfn[x] = low[x] = ++z;
  sta[++top] = x;
  for (int k = elast[x]; k; k = e[k].next) {
    int y = e[k].y;
    if (dfn[y] == 0) {
      V_DCC(y);
      low[x] = min(low[x], low[y]);
      if (low[y] >= dfn[x]) {
        int k;
        cnt++;
        do {
          k = sta[top];
          top--;
          vec[cnt].push_back(k);
        } while (k != y);
        vec[cnt].push_back(x);
      }
    } else
      low[x] = min(low[x], dfn[y]);
  }
}
node a[3100000];
int len, last[210000];
void ins(int x, int y) {
  len++;
  a[len].x = x;
  a[len].y = y;
  a[len].next = last[x];
  last[x] = len;
}
int id;
void composition(int n) {
  id = n;
  len = 0;
  memset(last, 0, sizeof(last));
  for (int i = 1; i <= cnt; i++) {
    id++;
    for (int j = 0; j < vec[i].size(); j++)
      ins(id, vec[i][j]), ins(vec[i][j], id);
  }
}
int Bin[30], dep[210000], f[30][210000];
void dfs(int x) {
  for (int i = 1; Bin[i] <= dep[x]; i++) f[i][x] = f[i - 1][f[i - 1][x]];
  for (int k = last[x]; k; k = a[k].next) {
    int y = a[k].y;
    if (y != f[0][x]) {
      f[0][y] = x;
      dep[y] = dep[x] + 1;
      dfs(y);
    }
  }
}
int getdis(int x, int y) {
  if (dep[x] < dep[y]) swap(x, y);
  int ret = 0;
  for (int i = 22; i >= 0; i--)
    if (dep[x] - dep[y] >= Bin[i]) ret += Bin[i], x = f[i][x];
  if (x == y) return ret;
  for (int i = 22; i >= 0; i--)
    if (dep[x] >= Bin[i] && f[i][x] != f[i][y])
      ret += Bin[i] * 2, x = f[i][x], y = f[i][y];
  return ret + 2;
}
int main() {
  int n, m, Q, x, y;
  scanf("%d%d%d", &n, &m, &Q);
  for (int i = 1; i <= m; i++) {
    scanf("%d%d", &x, &y);
    eins(x, y), eins(y, x);
  }
  z = top = 0;
  memset(dfn, 0, sizeof(dfn));
  memset(low, 0, sizeof(low));
  V_DCC(1);
  composition(n);
  Bin[0] = 1;
  for (int i = 1; i <= 25; i++) Bin[i] = Bin[i - 1] * 2;
  f[0][1] = 0;
  dep[1] = 0;
  dfs(1);
  while (Q--) {
    scanf("%d%d", &x, &y);
    printf("%d\n", getdis(x, y) / 2);
  }
  return 0;
}
