# Your code here!

#データの読み込み

fline=readlines
input=fline[0].split(" ")

n=input[0].to_i
m=input[1].to_i

k=Array.new(n)
a=Array.new(n,Array.new(n))
dp=Array.new(m+1,0)

for i in 0..n-1 do
    input=fline[i+1].split(" ")
    k[i]=input[0].to_i
    for j in 0..k[i]-1 do
    	a[i][j]=input[j+1].to_i
#    	printf("a[%d][%d]=%d\n",i,j,a[i][j])
    	dp[a[i][j]]=dp[a[i][j]]+1
    end
end

#実際の処理

=begin
for i in 0..n-1 do
	for j in 0..k[i]-1 do
	    p a[i][j]
		dp[a[i][j]]=dp[a[i][j]]+1
	end
end
=end

ans=0
for i in 1..m do
#    printf("dp[%d]=%d\n",i,dp[i])
	if dp[i]==n then
		ans=ans+1
	end
end


#出力

printf('%d', ans)

