#include <bits/stdc++.h>
using namespace std;
const int MAXN = 20;
string s[MAXN];
map<string, int> num;
map<int, string> name;
bool mark[MAXN][MAXN];
int main() {
  int n, m;
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    cin >> s[i];
    num[s[i]] = i;
    name[i] = s[i];
  }
  for (int i = 0; i < m; i++) {
    string a, b;
    cin >> a >> b;
    mark[num[a]][num[b]] = true;
    mark[num[b]][num[a]] = true;
  }
  int t = 0;
  int ans = -1;
  for (int i = 0; i < (1 << n); i++) {
    int tedad = 0;
    for (int j = 0; j < n; j++)
      if (i & (1 << j)) tedad++;
    bool ch = true;
    for (int j = 0; j < n; j++)
      for (int k = 0; k < n; k++)
        if ((i & (1 << j)) && (i & (1 << k))) {
          if (mark[j][k]) {
            ch = false;
            break;
          }
        }
    if (ch) {
      if (t < tedad) {
        t = tedad;
        ans = i;
      }
    }
  }
  vector<string> vec;
  for (int i = 0; i < n; i++)
    if (ans & (1 << i)) vec.push_back(name[i]);
  sort(vec.begin(), vec.end());
  cout << vec.size() << endl;
  for (int i = 0; i < (int)vec.size(); i++) cout << vec[i] << endl;
}
