#include <bits/stdc++.h>
using namespace std; 

#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
#define FOR(i, a, b) for( int i = a; i < (b); i++ )

using vi = vector<int>; 
using ll = long long;
using pii = pair<int, int>; 

const int maxn = 1e5; 
vi adj[maxn]; 

int tamanho[maxn], rep[maxn];

void dfs( int u, int r ){
    rep[u] = r;
    tamanho[u] = 1; 
    for( int v : adj[u] ) if( rep[v] == -1 ){
        dfs(v, r); 
        tamanho[u] += tamanho[v]; 
    }
}

void solve(){
    int n, m, q; cin >> n >> m >> q; 
    FOR(i, 0, m){
        int u, v; cin >> u >> v; u--; v--; 
        adj[u].push_back(v); 
        adj[v].push_back(u); 
    }

    FOR(i, 0, n) rep[i] = -1;
    FOR(i, 0, n) if( rep[i] == -1 ) dfs( i, i ); 

    while( q-- ){
        int u, v; cin >> u >> v; u--; v--; 
        if( rep[u] == rep[v] ){ cout << -1 << '\n'; continue; }
        u = rep[u], v = rep[v];

        ll tam = min(tamanho[u], tamanho[v]);

        ll total = 1LL*n*(n - 1)/2 - m; 
        ll ans = total - 1LL*(n - tam)*tam;

        cout << ans << '\n';
    }
}

int main(){
    ios::sync_with_stdio(false); cin.tie(NULL); 
    solve();
}