/*
TASK: Y1984
LANG: C++
*/
#include <iostream.h>
int a[1024][1024];
int used[1024];
int n;
bool fnd;
int st,nd,res;
void res_use()
{
  for(int i=0;i<1024;i++)
    used[i]=0;
}
void dfs(int x)
{
  used[x]=1;
  for(int i=0;i<n;i++)
    if(!used[i]&&a[x][i]!=0&&!fnd)
    {
      res*=a[x][i];
      if(i!=nd)
        dfs(i);
      else
      {
        fnd=true;
        return;
      }
    }

}
      
  

int main()
{
  int m,i,j,i1,i2,d,q;
  res=1;
  fnd=false;
  for(i=0;i<1024;i++)
    for(j=0;j<1024;j++)
      a[i][j]=0;
  cin>>n;
  cin>>m;
  for(i=0;i<m;i++)
  {
    cin>>i1;
    cin>>i2;
    cin>>d;
    if(d==1)
    {
      a[i1][i2]=-1;
      a[i2][i1]=-1;
    }
    else
    {
      a[i1][i2]=1;
      a[i2][i1]=1;
    }
  }
  cin>>q;
  for(int i=0;i<q; i++)
  {
    cin>>st>>nd;
    res=1;
    fnd=false;
    res_use();
    dfs(st);
    if(fnd)
    {
      if(res==1) cout<<0<<'\n';
      if(res==-1) cout<<1<<'\n';
    }
    else cout<<2<<'\n';
      
  }

  return 0;
}



