#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
int n, m, q;
unordered_map<string, int> mp;
char s[66], s1[66], s2[66];
int f[maxn];
int d[maxn];
int Find(int x) {
  int r = x;
  while (r != f[r]) r = f[r];
  while (x != r) {
    int y = f[x];
    f[x] = r;
    x = y;
  }
  return r;
}
void Merge(int x, int y) {
  int a = Find(x), b = Find(y);
  int fa = d[a];
  int fb = d[b];
  if (fa != -1 && fb != -1) {
    if (fa < fb) {
      f[fb] = fa;
    } else {
      f[fa] = fb;
      fa = fb;
    }
    if (a < b) {
      f[b] = a;
      d[a] = fa;
      d[fa] = a;
    } else {
      f[a] = b;
      d[b] = fa;
      d[fa] = b;
    }
  } else if (fa != -1) {
    if (a < b) {
      f[b] = a;
      d[a] = fa;
      d[fa] = a;
    } else {
      f[a] = b;
      d[b] = fa;
      d[fa] = b;
    }
  } else if (fb != -1) {
    if (a < b) {
      f[b] = a;
      d[a] = fb;
      d[fb] = a;
    } else {
      f[a] = b;
      d[b] = fb;
      d[fb] = b;
    }
  } else {
    if (a < b) {
      f[b] = a;
    } else {
      f[a] = b;
    }
  }
}
int main(void) {
  while (~scanf("%d %d %d", &n, &m, &q)) {
    for (int i = 1; i <= n; ++i) f[i] = i;
    int id = 0;
    mp.clear();
    memset(d, -1, sizeof d);
    for (int i = 1; i <= n; ++i) {
      scanf("%s", s);
      mp[s] = i;
    }
    for (int i = 0; i < m; ++i) {
      int x;
      scanf("%d %s %s", &x, s1, s2);
      int id1 = Find(mp[s1]), id2 = Find(mp[s2]);
      if (x == 1) {
        if (d[id1] == id2)
          printf("NO\n");
        else {
          Merge(id1, id2);
          printf("YES\n");
        }
      } else {
        if (id1 == id2)
          printf("NO\n");
        else {
          int fid1 = d[id1];
          if (fid1 != -1) Merge(fid1, id2);
          int fid2 = d[id2];
          if (fid2 != -1) Merge(fid2, id1);
          id1 = Find(id1);
          id2 = Find(id2);
          d[id1] = id2, d[id2] = id1, printf("YES\n");
        }
      }
    }
    for (int i = 0; i < q; ++i) {
      scanf("%s %s", s1, s2);
      int id1 = Find(mp[s1]), id2 = Find(mp[s2]);
      if (id1 == id2)
        printf("1\n");
      else if (d[id1] == id2)
        printf("2\n");
      else
        printf("3\n");
    }
  }
  return 0;
}
