#include <bits/stdc++.h>
using namespace std;
int n, k, z, t, d[100001];
vector<int> kurs, ans;
vector<vector<int>> tabl(100001);
void dfs(int x) {
  d[x] = 1;
  for (int i = 0; i < tabl[x].size(); i++) {
    if (d[tabl[x][i] - 1] == 0) {
      dfs(tabl[x][i] - 1);
    } else if (d[tabl[x][i] - 1] == 1) {
      cout << -1;
      exit(0);
    }
  }
  d[x] = 2;
  ans.push_back(x + 1);
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> k;
  for (int i = 0; i < k; i++) {
    cin >> z;
    kurs.push_back(z);
  }
  for (int i = 0; i < n; i++) {
    cin >> t;
    for (int j = 0; j < t; j++) {
      cin >> z;
      tabl[i].push_back(z);
    }
  }
  for (int i = 0; i < k; i++) {
    if (!d[kurs[i] - 1]) {
      dfs(kurs[i] - 1);
    }
  }
  cout << ans.size() << "\n";
  for (int i = 0; i < ans.size(); i++) {
    cout << ans[i] << " ";
  }
  return 0;
}
