Ma di quanto lo devo allocare il puntatore?

codice:
#include <stdio.h>

typedef struct {
        int nVoti;
} Candidato;

typedef struct {
        char nome[5];
        Candidato * pCand;
        int nCand;
        int voti;    /* numero voti ottenuti dalla lista */
} Lista;

typedef struct {
        char data[11];
        int consiglieri;
        Lista * pListe;
        int nListe;      /* numero di liste presentate */
} Elezioni;


void Input (Elezioni *p) {
    int i,j;
    printf ("**** ELEZIONI *****\n\n");
    printf ("Inserire la data delle elezioni: ");
    scanf ("%s", (*p).data);
    printf ("\nNumero di consiglieri da eleggere: ");
    scanf ("%d", (*p).consiglieri);
    printf ("\nInserire il numero di liste: ");
    scanf ("%d", (*p).nListe);
    for (i=0;i<(*p).nListe;i++) {
    	  printf ("\n\nLISTA[%d]: ", i+1);
    	  scanf ("%s   ", (*p).pListe[i].nome);
    	  printf ("Voti: ");
    	  scanf ("%d   ", (*p).pListe[i].voti);
        printf ("Numero di candidati: ");
        scanf ("%d", (*p).pListe[i].nCand);
        for(j=0;j<(*p).pListe[i].nCand;j++){
            printf("\nVoti candidato n%d: ", j+1);
            scanf("%d", (*p).pListe[i].pCand[j].nVoti);
        }/*for annidato*/
    }/*for esterno*/
}/*Input*/



int main () {
    Elezioni *pt;
    pt = (elezioni*)calloc(?,sizeof(elezioni));  // ? è da sostituire con una lunghezza che non so
    assert (pt!=NULL);
    Input (pt);
    return 1;
} /* main */