/*
TASK: y1984b
LANG: C
*/
#include <stdio.h>
#include <string.h>

void main(void)
{
	int i=0, N, M, A[1024], B[1024], R[1024], X, Y, Q;
	int list[1024];
	char str[3100]="\0";

	scanf("%d%d", &N, &M);
	scanf("%d%d%d", &A[0], &B[0], &R[0]);
	list[(A[0])]=1;
	if(R[0] == 0) list[(B[0])]=1; else list[(B[0])]=2;
	for(i=1; i<M; i++)
	{
		scanf("%d%d%d", &A[i], &B[i], &R[i]);
		if(list[A[i]] == 1) list[B[i]] = 1 + R[i];
		else
			if(list[A[i]] == 2) list[B[i]] = 2 - R[i];
			else 
				if(list[B[i]] == 1) list[A[i]] = 1 + R[i];
		        else 
					if(list[B[i]] == 2) list[A[i]] = 2 - R[i];
	}

	scanf("%d", &Q);
	for(i=0; i<N-1; i++)
	{
		for(i=0; i<M; i++)
		{	
			if(list[A[i]] == 1) list[B[i]] = 1 + R[i];
			else
				if(list[A[i]] == 2) list[B[i]] = 2 - R[i];
				else
					if(list[B[i]] == 1) list[A[i]] = 1 + R[i];
					else 
						if(list[B[i]] == 2) list[A[i]] = 2 - R[i];
		}
	}

	for(i=0; i<Q; i++)
	{ 
		scanf("%d%d", &X, &Y); 
		if((list[X] == list[Y]) && (0 < list[X] < 3)) strcat(str, "\n0");
		else
			if((list[X] != list[Y]) && (0 < list[X] < 3) && (0 < list[X] < 3)) strcat(str, "\n1");
			else strcat(str, "\n2");
	}

	puts(str);

}

	






