#include <bits/stdc++.h>
using namespace std;
int d[101010], lca[101010][20], low[101010],
    tempo = 1, cost[101010], h[101010], corte[101010], seen[101010], n, m, q,
    pai[101010];
vector<int> g[101010], adj[101010];
unordered_map<long long, int> mapa;
long long f(pair<int, int> par) {
  return ((1LL * par.first) << 20LL) + par.second;
}
bool tem(int u, int v) {
  if (u > v) swap(u, v);
  return mapa.count(f({u, v}));
}
void dfs(int u, int p, int up) {
  pai[u] = p;
  if (tem(u, pai[up]))
    lca[u][0] = lca[up][0];
  else
    lca[u][0] = up;
  for (int i = 1; i < 20; i++) lca[u][i] = lca[lca[u][i - 1]][i - 1];
  h[u] = h[lca[u][0]] + 1;
  int v;
  for (int i = 0; i < (int)g[u].size(); i++) {
    v = g[u][i];
    if (v != p) dfs(v, u, corte[u] ? u : up);
  }
}
void dfsTarjan(int u, int p) {
  seen[u] = 1;
  d[u] = low[u] = tempo++;
  int v, nf = 0;
  bool any = false;
  for (int i = 0; i < (int)adj[u].size(); i++) {
    v = adj[u][i];
    if (!seen[v]) {
      nf++;
      dfsTarjan(v, u);
      low[u] = min(low[u], low[v]);
      if (d[u] <= low[v]) any = true;
      g[u].push_back(v);
      g[v].push_back(u);
    } else if (v != p)
      low[u] = min(low[u], d[v]);
  }
  if (u == p) {
    if (nf > 1) corte[u] = 1;
  } else {
    if (any) corte[u] = 1;
  }
}
int getLca(int u, int v) {
  int ans = 0;
  if (h[u] < h[v]) swap(u, v);
  int d = abs(h[u] - h[v]);
  for (int i = 0; i < 20; i++)
    if (d & (1 << i)) {
      u = lca[u][i];
      ans += (1 << i);
    }
  if (u == v) return ans;
  for (int i = 20 - 1; i >= 0; i--) {
    if (lca[u][i] != lca[v][i]) {
      u = lca[u][i];
      v = lca[v][i];
      ans += (1 << i);
      ans += (1 << i);
    }
  }
  if (tem(u, v))
    ans++;
  else
    ans += 2;
  return ans;
}
int main() {
  scanf("%d %d %d", &n, &m, &q);
  int u, v, lc;
  for (int i = 0; i < m; i++) {
    scanf("%d %d", &u, &v);
    adj[u].push_back(v);
    adj[v].push_back(u);
    mapa[f({u, v})]++;
  }
  dfsTarjan(1, 1);
  dfs(1, 0, 0);
  while (q--) {
    scanf("%d %d", &u, &v);
    lc = getLca(u, v);
    printf("%d\n", lc);
  }
  return 0;
}
