import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();
		int M = sc.nextInt();
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();

		for (int i = 0; i < N; i++) {
			int K = sc.nextInt();
			for (int j = 0; j < K; j++) {
				int Ai = sc.nextInt();
				if (map.get(Ai) != null) {
					map.put(Ai, map.get(Ai) + 1);
				} else {
					map.put(Ai, 1);
				}
			}
		}

		int result = 0;
		for(Map.Entry<Integer, Integer> entry : map.entrySet()) {
			if (entry.getValue() == N ) {
				result++;
			}
		}

		System.out.println(result);
	}
} import java.util.HashMap; HashMap java.util import java.util.Map; Map java.util import java.util.Scanner; Scanner 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();
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();

		for (int i = 0; i < N; i++) {
			int K = sc.nextInt();
			for (int j = 0; j < K; j++) {
				int Ai = sc.nextInt();
				if (map.get(Ai) != null) {
					map.put(Ai, map.get(Ai) + 1);
				} else {
					map.put(Ai, 1);
				}
			}
		}

		int result = 0;
		for(Map.Entry<Integer, Integer> entry : map.entrySet()) {
			if (entry.getValue() == N ) {
				result++;
			}
		}

		System.out.println(result);
	}
} Main public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();
		int M = sc.nextInt();
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();

		for (int i = 0; i < N; i++) {
			int K = sc.nextInt();
			for (int j = 0; j < K; j++) {
				int Ai = sc.nextInt();
				if (map.get(Ai) != null) {
					map.put(Ai, map.get(Ai) + 1);
				} else {
					map.put(Ai, 1);
				}
			}
		}

		int result = 0;
		for(Map.Entry<Integer, Integer> entry : map.entrySet()) {
			if (entry.getValue() == N ) {
				result++;
			}
		}

		System.out.println(result);
	} main {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();
		int M = sc.nextInt();
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();

		for (int i = 0; i < N; i++) {
			int K = sc.nextInt();
			for (int j = 0; j < K; j++) {
				int Ai = sc.nextInt();
				if (map.get(Ai) != null) {
					map.put(Ai, map.get(Ai) + 1);
				} else {
					map.put(Ai, 1);
				}
			}
		}

		int result = 0;
		for(Map.Entry<Integer, Integer> entry : map.entrySet()) {
			if (entry.getValue() == N ) {
				result++;
			}
		}

		System.out.println(result);
	} 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 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); map new HashMap<Integer, Integer>() for (int i = 0; i < N; i++) {
			int K = sc.nextInt();
			for (int j = 0; j < K; j++) {
				int Ai = sc.nextInt();
				if (map.get(Ai) != null) {
					map.put(Ai, map.get(Ai) + 1);
				} else {
					map.put(Ai, 1);
				}
			}
		} int i = 0; int i = 0; i 0 i < N i N i++ i++ i {
			int K = sc.nextInt();
			for (int j = 0; j < K; j++) {
				int Ai = sc.nextInt();
				if (map.get(Ai) != null) {
					map.put(Ai, map.get(Ai) + 1);
				} else {
					map.put(Ai, 1);
				}
			}
		} {
			int K = sc.nextInt();
			for (int j = 0; j < K; j++) {
				int Ai = sc.nextInt();
				if (map.get(Ai) != null) {
					map.put(Ai, map.get(Ai) + 1);
				} else {
					map.put(Ai, 1);
				}
			}
		} int K = sc.nextInt(); K sc.nextInt() sc.nextInt sc for (int j = 0; j < K; j++) {
				int Ai = sc.nextInt();
				if (map.get(Ai) != null) {
					map.put(Ai, map.get(Ai) + 1);
				} else {
					map.put(Ai, 1);
				}
			} int j = 0; int j = 0; j 0 j < K j K j++ j++ j {
				int Ai = sc.nextInt();
				if (map.get(Ai) != null) {
					map.put(Ai, map.get(Ai) + 1);
				} else {
					map.put(Ai, 1);
				}
			} {
				int Ai = sc.nextInt();
				if (map.get(Ai) != null) {
					map.put(Ai, map.get(Ai) + 1);
				} else {
					map.put(Ai, 1);
				}
			} int Ai = sc.nextInt(); Ai sc.nextInt() sc.nextInt sc if (map.get(Ai) != null) {
					map.put(Ai, map.get(Ai) + 1);
				} else {
					map.put(Ai, 1);
				} map.get(Ai) != null map.get(Ai) map.get map Ai null {
					map.put(Ai, map.get(Ai) + 1);
				} map.put(Ai, map.get(Ai) + 1) map.put map Ai map.get(Ai) + 1 map.get(Ai) map.get map Ai 1 {
					map.put(Ai, 1);
				} map.put(Ai, 1) map.put map Ai 1 int result = 0; result 0 for(Map.Entry<Integer, Integer> entry : map.entrySet()) {
			if (entry.getValue() == N ) {
				result++;
			}
		} Map.Entry<Integer, Integer> entry map.entrySet() map.entrySet map {
			if (entry.getValue() == N ) {
				result++;
			}
		} {
			if (entry.getValue() == N ) {
				result++;
			}
		} if (entry.getValue() == N ) {
				result++;
			} entry.getValue() == N entry.getValue() entry.getValue entry N {
				result++;
			} result++ result System.out.println(result) System.out.println System.out System System.out result 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();
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();

		for (int i = 0; i < N; i++) {
			int K = sc.nextInt();
			for (int j = 0; j < K; j++) {
				int Ai = sc.nextInt();
				if (map.get(Ai) != null) {
					map.put(Ai, map.get(Ai) + 1);
				} else {
					map.put(Ai, 1);
				}
			}
		}

		int result = 0;
		for(Map.Entry<Integer, Integer> entry : map.entrySet()) {
			if (entry.getValue() == N ) {
				result++;
			}
		}

		System.out.println(result);
	}
} public class Main {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();
		int M = sc.nextInt();
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();

		for (int i = 0; i < N; i++) {
			int K = sc.nextInt();
			for (int j = 0; j < K; j++) {
				int Ai = sc.nextInt();
				if (map.get(Ai) != null) {
					map.put(Ai, map.get(Ai) + 1);
				} else {
					map.put(Ai, 1);
				}
			}
		}

		int result = 0;
		for(Map.Entry<Integer, Integer> entry : map.entrySet()) {
			if (entry.getValue() == N ) {
				result++;
			}
		}

		System.out.println(result);
	}
} Main
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class Main {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();
		int M = sc.nextInt();
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();

		for (int i = 0; i < N; i++) {
			int K = sc.nextInt();
			for (int j = 0; j < K; j++) {
				int Ai = sc.nextInt();
				if (map.get(Ai) != null) {
					map.put(Ai, map.get(Ai) + 1);
				} else {
					map.put(Ai, 1);
				}
			}
		}

		int result = 0;
		for(Map.Entry<Integer, Integer> entry : map.entrySet()) {
			if (entry.getValue() == N ) {
				result++;
			}
		}

		System.out.println(result);
	}
}