
import java.util.HashSet;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scn=new Scanner(System.in);
		int n=scn.nextInt();
		int m=scn.nextInt();
		HashSet<Integer> set=new HashSet<>();
		HashSet<Integer> s=new HashSet<>();
		for(int i=0;i<n;i++) {
			int k=scn.nextInt();
			//System.out.println(s+" "+set);
			s=new HashSet<>();
			for(int j=0;j<k;j++) {
				int x=scn.nextInt();

				if(i==0) {
					set.add(x);
					s.add(x);
				}else {
					if(set.contains(x)) {
						s.add(x);
					}
				}
			}
			if(i!=0) {
				set.removeAll(set);
				set.addAll(s);
			}
		}
		System.out.println(s.size());
	}

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

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scn=new Scanner(System.in);
		int n=scn.nextInt();
		int m=scn.nextInt();
		HashSet<Integer> set=new HashSet<>();
		HashSet<Integer> s=new HashSet<>();
		for(int i=0;i<n;i++) {
			int k=scn.nextInt();
			//System.out.println(s+" "+set);
			s=new HashSet<>();
			for(int j=0;j<k;j++) {
				int x=scn.nextInt();

				if(i==0) {
					set.add(x);
					s.add(x);
				}else {
					if(set.contains(x)) {
						s.add(x);
					}
				}
			}
			if(i!=0) {
				set.removeAll(set);
				set.addAll(s);
			}
		}
		System.out.println(s.size());
	}

} Main public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scn=new Scanner(System.in);
		int n=scn.nextInt();
		int m=scn.nextInt();
		HashSet<Integer> set=new HashSet<>();
		HashSet<Integer> s=new HashSet<>();
		for(int i=0;i<n;i++) {
			int k=scn.nextInt();
			//System.out.println(s+" "+set);
			s=new HashSet<>();
			for(int j=0;j<k;j++) {
				int x=scn.nextInt();

				if(i==0) {
					set.add(x);
					s.add(x);
				}else {
					if(set.contains(x)) {
						s.add(x);
					}
				}
			}
			if(i!=0) {
				set.removeAll(set);
				set.addAll(s);
			}
		}
		System.out.println(s.size());
	} main {
		// TODO Auto-generated method stub
		Scanner scn=new Scanner(System.in);
		int n=scn.nextInt();
		int m=scn.nextInt();
		HashSet<Integer> set=new HashSet<>();
		HashSet<Integer> s=new HashSet<>();
		for(int i=0;i<n;i++) {
			int k=scn.nextInt();
			//System.out.println(s+" "+set);
			s=new HashSet<>();
			for(int j=0;j<k;j++) {
				int x=scn.nextInt();

				if(i==0) {
					set.add(x);
					s.add(x);
				}else {
					if(set.contains(x)) {
						s.add(x);
					}
				}
			}
			if(i!=0) {
				set.removeAll(set);
				set.addAll(s);
			}
		}
		System.out.println(s.size());
	} Scanner scn=new Scanner(System.in); scn new Scanner(System.in) int n=scn.nextInt(); n scn.nextInt() scn.nextInt scn int m=scn.nextInt(); m scn.nextInt() scn.nextInt scn HashSet<Integer> set=new HashSet<>(); set new HashSet<>() HashSet<Integer> s=new HashSet<>(); s new HashSet<>() for(int i=0;i<n;i++) {
			int k=scn.nextInt();
			//System.out.println(s+" "+set);
			s=new HashSet<>();
			for(int j=0;j<k;j++) {
				int x=scn.nextInt();

				if(i==0) {
					set.add(x);
					s.add(x);
				}else {
					if(set.contains(x)) {
						s.add(x);
					}
				}
			}
			if(i!=0) {
				set.removeAll(set);
				set.addAll(s);
			}
		} int i=0; int i=0; i 0 i<n i n i++ i++ i {
			int k=scn.nextInt();
			//System.out.println(s+" "+set);
			s=new HashSet<>();
			for(int j=0;j<k;j++) {
				int x=scn.nextInt();

				if(i==0) {
					set.add(x);
					s.add(x);
				}else {
					if(set.contains(x)) {
						s.add(x);
					}
				}
			}
			if(i!=0) {
				set.removeAll(set);
				set.addAll(s);
			}
		} {
			int k=scn.nextInt();
			//System.out.println(s+" "+set);
			s=new HashSet<>();
			for(int j=0;j<k;j++) {
				int x=scn.nextInt();

				if(i==0) {
					set.add(x);
					s.add(x);
				}else {
					if(set.contains(x)) {
						s.add(x);
					}
				}
			}
			if(i!=0) {
				set.removeAll(set);
				set.addAll(s);
			}
		} int k=scn.nextInt(); k scn.nextInt() scn.nextInt scn s=new HashSet<>() s new HashSet<>() for(int j=0;j<k;j++) {
				int x=scn.nextInt();

				if(i==0) {
					set.add(x);
					s.add(x);
				}else {
					if(set.contains(x)) {
						s.add(x);
					}
				}
			} int j=0; int j=0; j 0 j<k j k j++ j++ j {
				int x=scn.nextInt();

				if(i==0) {
					set.add(x);
					s.add(x);
				}else {
					if(set.contains(x)) {
						s.add(x);
					}
				}
			} {
				int x=scn.nextInt();

				if(i==0) {
					set.add(x);
					s.add(x);
				}else {
					if(set.contains(x)) {
						s.add(x);
					}
				}
			} int x=scn.nextInt(); x scn.nextInt() scn.nextInt scn if(i==0) {
					set.add(x);
					s.add(x);
				}else {
					if(set.contains(x)) {
						s.add(x);
					}
				} i==0 i 0 {
					set.add(x);
					s.add(x);
				} set.add(x) set.add set x s.add(x) s.add s x {
					if(set.contains(x)) {
						s.add(x);
					}
				} if(set.contains(x)) {
						s.add(x);
					} set.contains(x) set.contains set x {
						s.add(x);
					} s.add(x) s.add s x if(i!=0) {
				set.removeAll(set);
				set.addAll(s);
			} i!=0 i 0 {
				set.removeAll(set);
				set.addAll(s);
			} set.removeAll(set) set.removeAll set set set.addAll(s) set.addAll set s System.out.println(s.size()) System.out.println System.out System System.out s.size() s.size s String[] args args public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scn=new Scanner(System.in);
		int n=scn.nextInt();
		int m=scn.nextInt();
		HashSet<Integer> set=new HashSet<>();
		HashSet<Integer> s=new HashSet<>();
		for(int i=0;i<n;i++) {
			int k=scn.nextInt();
			//System.out.println(s+" "+set);
			s=new HashSet<>();
			for(int j=0;j<k;j++) {
				int x=scn.nextInt();

				if(i==0) {
					set.add(x);
					s.add(x);
				}else {
					if(set.contains(x)) {
						s.add(x);
					}
				}
			}
			if(i!=0) {
				set.removeAll(set);
				set.addAll(s);
			}
		}
		System.out.println(s.size());
	}

} public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scn=new Scanner(System.in);
		int n=scn.nextInt();
		int m=scn.nextInt();
		HashSet<Integer> set=new HashSet<>();
		HashSet<Integer> s=new HashSet<>();
		for(int i=0;i<n;i++) {
			int k=scn.nextInt();
			//System.out.println(s+" "+set);
			s=new HashSet<>();
			for(int j=0;j<k;j++) {
				int x=scn.nextInt();

				if(i==0) {
					set.add(x);
					s.add(x);
				}else {
					if(set.contains(x)) {
						s.add(x);
					}
				}
			}
			if(i!=0) {
				set.removeAll(set);
				set.addAll(s);
			}
		}
		System.out.println(s.size());
	}

} Main

import java.util.HashSet;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scn=new Scanner(System.in);
		int n=scn.nextInt();
		int m=scn.nextInt();
		HashSet<Integer> set=new HashSet<>();
		HashSet<Integer> s=new HashSet<>();
		for(int i=0;i<n;i++) {
			int k=scn.nextInt();
			//System.out.println(s+" "+set);
			s=new HashSet<>();
			for(int j=0;j<k;j++) {
				int x=scn.nextInt();

				if(i==0) {
					set.add(x);
					s.add(x);
				}else {
					if(set.contains(x)) {
						s.add(x);
					}
				}
			}
			if(i!=0) {
				set.removeAll(set);
				set.addAll(s);
			}
		}
		System.out.println(s.size());
	}

}
