import java.util.ArrayList;
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();
        ArrayList list1 = new ArrayList<Integer>();
        ArrayList list2 = new ArrayList<Integer>();

        int K = sc.nextInt();
        for (int i = 0; i < K; i++) {
            list1.add(sc.nextInt());
        }

        for (int i = 0; i < N-1; i++) {
            K = sc.nextInt();
            for (int j = 0; j < K; j++) {
                int A = sc.nextInt();
                if (list1.contains(A)) {
                    list2.add(A);
                }
            }
            list1.clear();
            for (int j = 0; j < list2.size(); j++) {
                list1.add(list2.get(j));
            }
            list2.clear();
        }

        System.out.println(list1.size());
    }
} import java.util.ArrayList; ArrayList 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();
        ArrayList list1 = new ArrayList<Integer>();
        ArrayList list2 = new ArrayList<Integer>();

        int K = sc.nextInt();
        for (int i = 0; i < K; i++) {
            list1.add(sc.nextInt());
        }

        for (int i = 0; i < N-1; i++) {
            K = sc.nextInt();
            for (int j = 0; j < K; j++) {
                int A = sc.nextInt();
                if (list1.contains(A)) {
                    list2.add(A);
                }
            }
            list1.clear();
            for (int j = 0; j < list2.size(); j++) {
                list1.add(list2.get(j));
            }
            list2.clear();
        }

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

        int N = sc.nextInt();
        int M = sc.nextInt();
        ArrayList list1 = new ArrayList<Integer>();
        ArrayList list2 = new ArrayList<Integer>();

        int K = sc.nextInt();
        for (int i = 0; i < K; i++) {
            list1.add(sc.nextInt());
        }

        for (int i = 0; i < N-1; i++) {
            K = sc.nextInt();
            for (int j = 0; j < K; j++) {
                int A = sc.nextInt();
                if (list1.contains(A)) {
                    list2.add(A);
                }
            }
            list1.clear();
            for (int j = 0; j < list2.size(); j++) {
                list1.add(list2.get(j));
            }
            list2.clear();
        }

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

        int N = sc.nextInt();
        int M = sc.nextInt();
        ArrayList list1 = new ArrayList<Integer>();
        ArrayList list2 = new ArrayList<Integer>();

        int K = sc.nextInt();
        for (int i = 0; i < K; i++) {
            list1.add(sc.nextInt());
        }

        for (int i = 0; i < N-1; i++) {
            K = sc.nextInt();
            for (int j = 0; j < K; j++) {
                int A = sc.nextInt();
                if (list1.contains(A)) {
                    list2.add(A);
                }
            }
            list1.clear();
            for (int j = 0; j < list2.size(); j++) {
                list1.add(list2.get(j));
            }
            list2.clear();
        }

        System.out.println(list1.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 ArrayList list1 = new ArrayList<Integer>(); list1 new ArrayList<Integer>() ArrayList list2 = new ArrayList<Integer>(); list2 new ArrayList<Integer>() int K = sc.nextInt(); K sc.nextInt() sc.nextInt sc for (int i = 0; i < K; i++) {
            list1.add(sc.nextInt());
        } int i = 0; int i = 0; i 0 i < K i K i++ i++ i {
            list1.add(sc.nextInt());
        } {
            list1.add(sc.nextInt());
        } list1.add(sc.nextInt()) list1.add list1 sc.nextInt() sc.nextInt sc for (int i = 0; i < N-1; i++) {
            K = sc.nextInt();
            for (int j = 0; j < K; j++) {
                int A = sc.nextInt();
                if (list1.contains(A)) {
                    list2.add(A);
                }
            }
            list1.clear();
            for (int j = 0; j < list2.size(); j++) {
                list1.add(list2.get(j));
            }
            list2.clear();
        } int i = 0; int i = 0; i 0 i < N-1 i N-1 N 1 i++ i++ i {
            K = sc.nextInt();
            for (int j = 0; j < K; j++) {
                int A = sc.nextInt();
                if (list1.contains(A)) {
                    list2.add(A);
                }
            }
            list1.clear();
            for (int j = 0; j < list2.size(); j++) {
                list1.add(list2.get(j));
            }
            list2.clear();
        } {
            K = sc.nextInt();
            for (int j = 0; j < K; j++) {
                int A = sc.nextInt();
                if (list1.contains(A)) {
                    list2.add(A);
                }
            }
            list1.clear();
            for (int j = 0; j < list2.size(); j++) {
                list1.add(list2.get(j));
            }
            list2.clear();
        } K = sc.nextInt() K sc.nextInt() sc.nextInt sc for (int j = 0; j < K; j++) {
                int A = sc.nextInt();
                if (list1.contains(A)) {
                    list2.add(A);
                }
            } int j = 0; int j = 0; j 0 j < K j K j++ j++ j {
                int A = sc.nextInt();
                if (list1.contains(A)) {
                    list2.add(A);
                }
            } {
                int A = sc.nextInt();
                if (list1.contains(A)) {
                    list2.add(A);
                }
            } int A = sc.nextInt(); A sc.nextInt() sc.nextInt sc if (list1.contains(A)) {
                    list2.add(A);
                } list1.contains(A) list1.contains list1 A {
                    list2.add(A);
                } list2.add(A) list2.add list2 A list1.clear() list1.clear list1 for (int j = 0; j < list2.size(); j++) {
                list1.add(list2.get(j));
            } int j = 0; int j = 0; j 0 j < list2.size() j list2.size() list2.size list2 j++ j++ j {
                list1.add(list2.get(j));
            } {
                list1.add(list2.get(j));
            } list1.add(list2.get(j)) list1.add list1 list2.get(j) list2.get list2 j list2.clear() list2.clear list2 System.out.println(list1.size()) System.out.println System.out System System.out list1.size() list1.size list1 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();
        ArrayList list1 = new ArrayList<Integer>();
        ArrayList list2 = new ArrayList<Integer>();

        int K = sc.nextInt();
        for (int i = 0; i < K; i++) {
            list1.add(sc.nextInt());
        }

        for (int i = 0; i < N-1; i++) {
            K = sc.nextInt();
            for (int j = 0; j < K; j++) {
                int A = sc.nextInt();
                if (list1.contains(A)) {
                    list2.add(A);
                }
            }
            list1.clear();
            for (int j = 0; j < list2.size(); j++) {
                list1.add(list2.get(j));
            }
            list2.clear();
        }

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

        int N = sc.nextInt();
        int M = sc.nextInt();
        ArrayList list1 = new ArrayList<Integer>();
        ArrayList list2 = new ArrayList<Integer>();

        int K = sc.nextInt();
        for (int i = 0; i < K; i++) {
            list1.add(sc.nextInt());
        }

        for (int i = 0; i < N-1; i++) {
            K = sc.nextInt();
            for (int j = 0; j < K; j++) {
                int A = sc.nextInt();
                if (list1.contains(A)) {
                    list2.add(A);
                }
            }
            list1.clear();
            for (int j = 0; j < list2.size(); j++) {
                list1.add(list2.get(j));
            }
            list2.clear();
        }

        System.out.println(list1.size());
    }
} Main
import java.util.ArrayList;
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();
        ArrayList list1 = new ArrayList<Integer>();
        ArrayList list2 = new ArrayList<Integer>();

        int K = sc.nextInt();
        for (int i = 0; i < K; i++) {
            list1.add(sc.nextInt());
        }

        for (int i = 0; i < N-1; i++) {
            K = sc.nextInt();
            for (int j = 0; j < K; j++) {
                int A = sc.nextInt();
                if (list1.contains(A)) {
                    list2.add(A);
                }
            }
            list1.clear();
            for (int j = 0; j < list2.size(); j++) {
                list1.add(list2.get(j));
            }
            list2.clear();
        }

        System.out.println(list1.size());
    }
}
