#include <bits/stdc++.h>
using namespace std;
const int maxn=100005;
int sh[maxn],t,n,m,edgesum;
vector <int> edge[maxn];
bool vis[maxn],flagof1=0,book[maxn];
int sum[maxn],sums=0;
void dfs(int now)
{
if(flagof1==1) return ;
if(vis[now]==1)
{
flagof1=1;
cout<<"-1";
cout<<" "<<now<<endl;
return ;
}
vis[now]=1;
for(int i=0;i<edge[now].size();i++)
{
dfs(edge[now][i]);
cout<<" now "<< now <<" dfs"<<edge[now][i]<<endl;
}
if(book[now]==0)
{
book[now]=1;
sum[++sums]=now;
}
return ;
}
int main()
{
cin>>n>>t;
for(int i=1;i<=t;i++)
cin>>sh[i];
for(int i=1;i<=n;i++)
{
int TT;
cin>>TT;
while(TT--)
{
int v;
cin>>v;
edge[i].push_back(v);
}
}
for(int i=1;i<=t;i++)
{
if(flagof1==1) return 0;
memset(vis,0,sizeof(vis));
if(book[ sh[i] ]==0) dfs(sh[i]);
if(flagof1==1) return 0;
}
cout<<sums<<endl;
for(int i=1;i<=sums;i++)
{
cout<<sum[i]<<" ";
}
return 0;
}