#include <bits/stdc++.h>
using namespace std;
int n, m, k, l;
vector<int> graph[1111111];
vector<int> kom;
int used[1111111];
void dfs(int u) {
  used[u] = 1;
  for (int i = 0; i < graph[u].size(); i++) {
    int tom = graph[u][i];
    if (used[tom] == 0) {
      dfs(tom);
    } else if (used[tom] == 1) {
      cout << -1;
      exit(0);
    }
  }
  used[u]++;
  kom.push_back(u);
}
int main() {
  cin >> n >> k;
  long long kurs[k + 1];
  for (int i = 0; i < k; i++) {
    cin >> m;
    m--;
    kurs[i] = m;
  }
  for (int i = 0; i < n; i++) {
    cin >> l;
    for (int j = 0; j < l; j++) {
      cin >> m;
      m--;
      graph[i].push_back(m);
    }
  }
  for (int i = 0; i < k; i++) {
    if (used[kurs[i]] == 0) {
      dfs(kurs[i]);
    }
  }
  cout << kom.size() << endl;
  for (int i = 0; i < kom.size(); i++) {
    cout << kom[i] + 1 << " ";
  }
  return 0;
}
