#include<bits/stdc++.h>
using namespace std;
#define X first
#define Y second
#define eps 1e-2
#define gcd __gcd
#define pb push_back
#define PI acos(-1.0)
#define lowbit(x) (x)&(-x)
#define bug printf("!!!!!\n");
#define mem(x,y) memset(x,y,sizeof(x))
typedef long long LL;
typedef long double LD;
typedef pair<int,int> pii;
typedef unsigned long long uLL;
const int maxn = 2e5+2;
const int INF = 1<<30;
const int mod = 1e9+7;
int n,m,q,fa[maxn];
map<string,int> mp;
int find(int x){
if(fa[x]==x) return x;
else {
return fa[x]=find(fa[x]);
}
}
void solve(){
scanf("%d%d%d",&n,&m,&q);
for(int i=1;i<=2*n;i++) fa[i]=i;
for(int i=1;i<=n;i++){
string s;cin>>s;
mp[s]=i;
}
for(int i=1;i<=m;i++){
int op;string s1,s2;cin>>op>>s1>>s2;
int s3=mp[s1],s4=mp[s2];
if(op==1){
if(find(s3)==find(s4+n)){
cout<<"NO"<<endl;
}else{
cout<<"YES"<<endl;
fa[find(s3)]=find(s4);
fa[find(s3+n)]=find(s4+n);
}
}else{
if(find(s3)==find(s4)){
cout<<"NO"<<endl;
}else{
cout<<"YES"<<endl;
fa[find(s3)]=find(s4+n);
fa[find(s3+n)]=find(s4);
}
}
}
while(q--){
string s1,s2;cin>>s1>>s2;
int s3=mp[s1],s4=mp[s2];
if(find(s3)==find(s4)){
cout<<1<<endl;
}else if(find(s3)==find(s4+n)){
cout<<2<<endl;
}else{
cout<<3<<endl;
}
}
return;
}
int main()
{
int t = 1;
while(t--){
solve();
}
return 0;
}