import java.util.*;
import java.io.*;

public class conectar{
    static int maxn = 100_000;
    static ArrayList<Integer>[] adj;
    static int[] rep = new int[maxn];
    static int[] tamanho = new int[maxn];

    public static 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]; 
        } 
    }
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);

        int n = s.nextInt(), m = s.nextInt(), q = s.nextInt(); 
        adj = new ArrayList[n];
        for( int i = 0; i < n; i++ ) adj[i] = new ArrayList<>();

        for( int i = 0; i < m; i++ ){
            int u = s.nextInt(), v = s.nextInt(); 
            u--; v--; 
            adj[u].add(v); 
            adj[v].add(u); 
        }

        for( int i = 0; i < n; i++ ) rep[i] = -1; 
        for( int i = 0; i < n; i++ ) if( rep[i] == -1 ){
            dfs(i, i); 
        }

        for( int i = 0; i < q; i++ ){
            int u = s.nextInt(), v = s.nextInt(); 
            u--; v--; 
            if( rep[u] == rep[v] ){
                System.out.println(-1); continue;
            }
            u = rep[u]; 
            v = rep[v];

            long total = (long)n*(n - 1)/2 - m; 
            long ans = total - Math.min((long)(n - tamanho[u])*tamanho[u], (long)(n - tamanho[v])*tamanho[v]);
            System.out.println(ans);
        }
    }
}