#include <bits/stdc++.h>
using namespace std;
const long long MAX = 2e9, N = 1e5 + 10;
long long n, m, q, id;
vector<long long> kolejka;
vector<long long> G[N], G2[2 * N];
bool vis[2 * N];
long long dep[2 * N];
long long dfs(long long x, long long d) {
  vis[x] = true;
  dep[x] = d;
  kolejka.push_back(x);
  long long najwyzej = dep[x];
  for (long long i : G[x]) {
    if (!vis[i]) najwyzej = min(najwyzej, dfs(i, d + 1));
  }
  if (najwyzej == dep[x]) {
    long long gdzie = -1;
    for (long long i : G[x]) {
      if (dep[i] < najwyzej) {
        najwyzej = dep[i];
        gdzie = i;
      }
    }
    if (dep[x] == najwyzej) {
      kolejka.pop_back();
      return 0;
    }
    for (long long i = ((long long)((kolejka).size()) - 1); i >= (0); i--) {
      G2[id].push_back(kolejka[i]);
      G2[kolejka[i]].push_back(id);
      if (kolejka[i] == gdzie) break;
    }
    id++;
  }
  kolejka.pop_back();
  return najwyzej;
}
long long rod[2 * N][20];
long long byl = 0;
void dfs2(long long x, long long d) {
  byl++;
  vis[x] = true;
  dep[x] = d;
  for (long long i : G2[x]) {
    if (!vis[i]) {
      dfs2(i, d + 1);
      rod[i][0] = x;
    }
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cerr.tie(0);
  cout << setprecision(6) << fixed;
  cerr << setprecision(6) << fixed;
  cin >> n >> m >> q;
  id = n + 1;
  for (long long i = ((0)); i <= ((m)-1); i++) {
    long long a, b;
    cin >> a >> b;
    G[a].push_back(b);
    G[b].push_back(a);
  }
  dfs(1, 1);
  memset(vis, 0, sizeof(vis));
  memset(dep, 0, sizeof(dep));
  dfs2(1, 1);
  for (long long i = ((1)); i <= ((20) - 1); i++)
    for (long long j = ((0)); j <= ((id)-1); j++)
      rod[j][i] = rod[rod[j][i - 1]][i - 1];
  while (q--) {
    long long a, b;
    cin >> a >> b;
    if (dep[a] > dep[b]) swap(a, b);
    long long A = a, B = b;
    for (long long i = (19); i >= (0); i--)
      if (dep[rod[b][i]] >= dep[a]) b = rod[b][i];
    for (long long i = (19); i >= (0); i--)
      if (rod[a][i] != rod[b][i]) {
        a = rod[a][i];
        b = rod[b][i];
      }
    long long lca;
    if (a != b)
      lca = rod[a][0];
    else
      lca = a;
    cout << (dep[A] + dep[B] - 2 * dep[lca]) / 2 << "\n";
  }
}
