import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;

public class Main {

	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		int n=sc.nextInt();
		int m=sc.nextInt();
		Set<Integer> set = new HashSet<>();
		for(int i=0;i<n;i++) {
		int k=sc.nextInt();
		List<Integer> list = new ArrayList<>();
		
		for(int j=0;j<k;j++) {
			if(i==0) set.add(sc.nextInt());
			else 	list.add(sc.nextInt());
		}if(i!=0)
		set.retainAll(list);
		}
		
		System.out.println(set.size());
	}

} import java.util.ArrayList; ArrayList java.util import java.util.HashSet; HashSet java.util import java.util.List; List java.util import java.util.Scanner; Scanner java.util import java.util.Set; Set java.util public class Main {

	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		int n=sc.nextInt();
		int m=sc.nextInt();
		Set<Integer> set = new HashSet<>();
		for(int i=0;i<n;i++) {
		int k=sc.nextInt();
		List<Integer> list = new ArrayList<>();
		
		for(int j=0;j<k;j++) {
			if(i==0) set.add(sc.nextInt());
			else 	list.add(sc.nextInt());
		}if(i!=0)
		set.retainAll(list);
		}
		
		System.out.println(set.size());
	}

} Main public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		int n=sc.nextInt();
		int m=sc.nextInt();
		Set<Integer> set = new HashSet<>();
		for(int i=0;i<n;i++) {
		int k=sc.nextInt();
		List<Integer> list = new ArrayList<>();
		
		for(int j=0;j<k;j++) {
			if(i==0) set.add(sc.nextInt());
			else 	list.add(sc.nextInt());
		}if(i!=0)
		set.retainAll(list);
		}
		
		System.out.println(set.size());
	} main {
		Scanner sc = new Scanner(System.in);
		int n=sc.nextInt();
		int m=sc.nextInt();
		Set<Integer> set = new HashSet<>();
		for(int i=0;i<n;i++) {
		int k=sc.nextInt();
		List<Integer> list = new ArrayList<>();
		
		for(int j=0;j<k;j++) {
			if(i==0) set.add(sc.nextInt());
			else 	list.add(sc.nextInt());
		}if(i!=0)
		set.retainAll(list);
		}
		
		System.out.println(set.size());
	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n=sc.nextInt(); n sc.nextInt() sc.nextInt sc int m=sc.nextInt(); m sc.nextInt() sc.nextInt sc Set<Integer> set = new HashSet<>(); set new HashSet<>() for(int i=0;i<n;i++) {
		int k=sc.nextInt();
		List<Integer> list = new ArrayList<>();
		
		for(int j=0;j<k;j++) {
			if(i==0) set.add(sc.nextInt());
			else 	list.add(sc.nextInt());
		}if(i!=0)
		set.retainAll(list);
		} int i=0; int i=0; i 0 i<n i n i++ i++ i {
		int k=sc.nextInt();
		List<Integer> list = new ArrayList<>();
		
		for(int j=0;j<k;j++) {
			if(i==0) set.add(sc.nextInt());
			else 	list.add(sc.nextInt());
		}if(i!=0)
		set.retainAll(list);
		} {
		int k=sc.nextInt();
		List<Integer> list = new ArrayList<>();
		
		for(int j=0;j<k;j++) {
			if(i==0) set.add(sc.nextInt());
			else 	list.add(sc.nextInt());
		}if(i!=0)
		set.retainAll(list);
		} int k=sc.nextInt(); k sc.nextInt() sc.nextInt sc List<Integer> list = new ArrayList<>(); list new ArrayList<>() for(int j=0;j<k;j++) {
			if(i==0) set.add(sc.nextInt());
			else 	list.add(sc.nextInt());
		} int j=0; int j=0; j 0 j<k j k j++ j++ j {
			if(i==0) set.add(sc.nextInt());
			else 	list.add(sc.nextInt());
		} {
			if(i==0) set.add(sc.nextInt());
			else 	list.add(sc.nextInt());
		} if(i==0) set.add(sc.nextInt());
			else 	list.add(sc.nextInt()); i==0 i 0 set.add(sc.nextInt()) set.add set sc.nextInt() sc.nextInt sc list.add(sc.nextInt()) list.add list sc.nextInt() sc.nextInt sc if(i!=0)
		set.retainAll(list); i!=0 i 0 set.retainAll(list) set.retainAll set list System.out.println(set.size()) System.out.println System.out System System.out set.size() set.size set String args[] args public class Main {

	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		int n=sc.nextInt();
		int m=sc.nextInt();
		Set<Integer> set = new HashSet<>();
		for(int i=0;i<n;i++) {
		int k=sc.nextInt();
		List<Integer> list = new ArrayList<>();
		
		for(int j=0;j<k;j++) {
			if(i==0) set.add(sc.nextInt());
			else 	list.add(sc.nextInt());
		}if(i!=0)
		set.retainAll(list);
		}
		
		System.out.println(set.size());
	}

} public class Main {

	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		int n=sc.nextInt();
		int m=sc.nextInt();
		Set<Integer> set = new HashSet<>();
		for(int i=0;i<n;i++) {
		int k=sc.nextInt();
		List<Integer> list = new ArrayList<>();
		
		for(int j=0;j<k;j++) {
			if(i==0) set.add(sc.nextInt());
			else 	list.add(sc.nextInt());
		}if(i!=0)
		set.retainAll(list);
		}
		
		System.out.println(set.size());
	}

} Main
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;

public class Main {

	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		int n=sc.nextInt();
		int m=sc.nextInt();
		Set<Integer> set = new HashSet<>();
		for(int i=0;i<n;i++) {
		int k=sc.nextInt();
		List<Integer> list = new ArrayList<>();
		
		for(int j=0;j<k;j++) {
			if(i==0) set.add(sc.nextInt());
			else 	list.add(sc.nextInt());
		}if(i!=0)
		set.retainAll(list);
		}
		
		System.out.println(set.size());
	}

}
