import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Main{
	public static void main(String[] args) {

		int suretu_kazu=0;
		int[] suretu;
		int bubun_nokazu=0;
		int[] bubun;
		String moji="";
		String[] srt;
		String[] bbn;
		int gacchi=0;

		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));

		try {
			moji=bfr.readLine();
			suretu_kazu=Integer.parseInt(moji);
			moji=bfr.readLine();
			srt=moji.split(" ");
			suretu=new int[suretu_kazu];
			for(int i=0; i<suretu_kazu; i++) {
				suretu[i]=Integer.parseInt(srt[i]);
			}
			moji=bfr.readLine();
			bubun_nokazu=Integer.parseInt(moji);
			moji=bfr.readLine();
			bbn=moji.split(" ");
			bubun=new int[bubun_nokazu];
			for(int i=0; i<bubun_nokazu; i++) {
				bubun[i]=Integer.parseInt(bbn[i]);
			}

			int hidari=0;
			int migi=suretu_kazu;
			int mid=0;

			for(int i=0; i<bubun_nokazu; i++) {
				hidari=0;
				migi=suretu_kazu;
				mid=0;
				while(hidari<migi) {
					mid=(hidari+migi)/2;
					if(suretu[mid]==bubun[i]) {		//探したい値と探す配列のまん中の数字と一致した時合致
						gacchi++;
						break;
					}
					else if(bubun[i]<suretu[mid]) {		//真ん中の数字と探したい数字の大小　真ん中のほうが大きいときは　右（MAX）が真ん中
						migi=mid;
					}
					else {				//中央が探すものより小さい時、一番左を大きくする。
						hidari=mid+1;
					}
				}
			}
			System.out.println(gacchi);
		}catch(IOException e) {

		}
	}
} import java.io.BufferedReader; BufferedReader java.io import java.io.IOException; IOException java.io import java.io.InputStreamReader; InputStreamReader java.io class Main{
	public static void main(String[] args) {

		int suretu_kazu=0;
		int[] suretu;
		int bubun_nokazu=0;
		int[] bubun;
		String moji="";
		String[] srt;
		String[] bbn;
		int gacchi=0;

		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));

		try {
			moji=bfr.readLine();
			suretu_kazu=Integer.parseInt(moji);
			moji=bfr.readLine();
			srt=moji.split(" ");
			suretu=new int[suretu_kazu];
			for(int i=0; i<suretu_kazu; i++) {
				suretu[i]=Integer.parseInt(srt[i]);
			}
			moji=bfr.readLine();
			bubun_nokazu=Integer.parseInt(moji);
			moji=bfr.readLine();
			bbn=moji.split(" ");
			bubun=new int[bubun_nokazu];
			for(int i=0; i<bubun_nokazu; i++) {
				bubun[i]=Integer.parseInt(bbn[i]);
			}

			int hidari=0;
			int migi=suretu_kazu;
			int mid=0;

			for(int i=0; i<bubun_nokazu; i++) {
				hidari=0;
				migi=suretu_kazu;
				mid=0;
				while(hidari<migi) {
					mid=(hidari+migi)/2;
					if(suretu[mid]==bubun[i]) {		//探したい値と探す配列のまん中の数字と一致した時合致
						gacchi++;
						break;
					}
					else if(bubun[i]<suretu[mid]) {		//真ん中の数字と探したい数字の大小　真ん中のほうが大きいときは　右（MAX）が真ん中
						migi=mid;
					}
					else {				//中央が探すものより小さい時、一番左を大きくする。
						hidari=mid+1;
					}
				}
			}
			System.out.println(gacchi);
		}catch(IOException e) {

		}
	}
} Main public static void main(String[] args) {

		int suretu_kazu=0;
		int[] suretu;
		int bubun_nokazu=0;
		int[] bubun;
		String moji="";
		String[] srt;
		String[] bbn;
		int gacchi=0;

		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));

		try {
			moji=bfr.readLine();
			suretu_kazu=Integer.parseInt(moji);
			moji=bfr.readLine();
			srt=moji.split(" ");
			suretu=new int[suretu_kazu];
			for(int i=0; i<suretu_kazu; i++) {
				suretu[i]=Integer.parseInt(srt[i]);
			}
			moji=bfr.readLine();
			bubun_nokazu=Integer.parseInt(moji);
			moji=bfr.readLine();
			bbn=moji.split(" ");
			bubun=new int[bubun_nokazu];
			for(int i=0; i<bubun_nokazu; i++) {
				bubun[i]=Integer.parseInt(bbn[i]);
			}

			int hidari=0;
			int migi=suretu_kazu;
			int mid=0;

			for(int i=0; i<bubun_nokazu; i++) {
				hidari=0;
				migi=suretu_kazu;
				mid=0;
				while(hidari<migi) {
					mid=(hidari+migi)/2;
					if(suretu[mid]==bubun[i]) {		//探したい値と探す配列のまん中の数字と一致した時合致
						gacchi++;
						break;
					}
					else if(bubun[i]<suretu[mid]) {		//真ん中の数字と探したい数字の大小　真ん中のほうが大きいときは　右（MAX）が真ん中
						migi=mid;
					}
					else {				//中央が探すものより小さい時、一番左を大きくする。
						hidari=mid+1;
					}
				}
			}
			System.out.println(gacchi);
		}catch(IOException e) {

		}
	} main {

		int suretu_kazu=0;
		int[] suretu;
		int bubun_nokazu=0;
		int[] bubun;
		String moji="";
		String[] srt;
		String[] bbn;
		int gacchi=0;

		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));

		try {
			moji=bfr.readLine();
			suretu_kazu=Integer.parseInt(moji);
			moji=bfr.readLine();
			srt=moji.split(" ");
			suretu=new int[suretu_kazu];
			for(int i=0; i<suretu_kazu; i++) {
				suretu[i]=Integer.parseInt(srt[i]);
			}
			moji=bfr.readLine();
			bubun_nokazu=Integer.parseInt(moji);
			moji=bfr.readLine();
			bbn=moji.split(" ");
			bubun=new int[bubun_nokazu];
			for(int i=0; i<bubun_nokazu; i++) {
				bubun[i]=Integer.parseInt(bbn[i]);
			}

			int hidari=0;
			int migi=suretu_kazu;
			int mid=0;

			for(int i=0; i<bubun_nokazu; i++) {
				hidari=0;
				migi=suretu_kazu;
				mid=0;
				while(hidari<migi) {
					mid=(hidari+migi)/2;
					if(suretu[mid]==bubun[i]) {		//探したい値と探す配列のまん中の数字と一致した時合致
						gacchi++;
						break;
					}
					else if(bubun[i]<suretu[mid]) {		//真ん中の数字と探したい数字の大小　真ん中のほうが大きいときは　右（MAX）が真ん中
						migi=mid;
					}
					else {				//中央が探すものより小さい時、一番左を大きくする。
						hidari=mid+1;
					}
				}
			}
			System.out.println(gacchi);
		}catch(IOException e) {

		}
	} int suretu_kazu=0; suretu_kazu 0 int[] suretu; suretu int bubun_nokazu=0; bubun_nokazu 0 int[] bubun; bubun String moji=""; moji "" String[] srt; srt String[] bbn; bbn int gacchi=0; gacchi 0 BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in)); bfr new BufferedReader(new InputStreamReader(System.in)) try {
			moji=bfr.readLine();
			suretu_kazu=Integer.parseInt(moji);
			moji=bfr.readLine();
			srt=moji.split(" ");
			suretu=new int[suretu_kazu];
			for(int i=0; i<suretu_kazu; i++) {
				suretu[i]=Integer.parseInt(srt[i]);
			}
			moji=bfr.readLine();
			bubun_nokazu=Integer.parseInt(moji);
			moji=bfr.readLine();
			bbn=moji.split(" ");
			bubun=new int[bubun_nokazu];
			for(int i=0; i<bubun_nokazu; i++) {
				bubun[i]=Integer.parseInt(bbn[i]);
			}

			int hidari=0;
			int migi=suretu_kazu;
			int mid=0;

			for(int i=0; i<bubun_nokazu; i++) {
				hidari=0;
				migi=suretu_kazu;
				mid=0;
				while(hidari<migi) {
					mid=(hidari+migi)/2;
					if(suretu[mid]==bubun[i]) {		//探したい値と探す配列のまん中の数字と一致した時合致
						gacchi++;
						break;
					}
					else if(bubun[i]<suretu[mid]) {		//真ん中の数字と探したい数字の大小　真ん中のほうが大きいときは　右（MAX）が真ん中
						migi=mid;
					}
					else {				//中央が探すものより小さい時、一番左を大きくする。
						hidari=mid+1;
					}
				}
			}
			System.out.println(gacchi);
		}catch(IOException e) {

		} catch(IOException e) {

		} IOException e {

		} {
			moji=bfr.readLine();
			suretu_kazu=Integer.parseInt(moji);
			moji=bfr.readLine();
			srt=moji.split(" ");
			suretu=new int[suretu_kazu];
			for(int i=0; i<suretu_kazu; i++) {
				suretu[i]=Integer.parseInt(srt[i]);
			}
			moji=bfr.readLine();
			bubun_nokazu=Integer.parseInt(moji);
			moji=bfr.readLine();
			bbn=moji.split(" ");
			bubun=new int[bubun_nokazu];
			for(int i=0; i<bubun_nokazu; i++) {
				bubun[i]=Integer.parseInt(bbn[i]);
			}

			int hidari=0;
			int migi=suretu_kazu;
			int mid=0;

			for(int i=0; i<bubun_nokazu; i++) {
				hidari=0;
				migi=suretu_kazu;
				mid=0;
				while(hidari<migi) {
					mid=(hidari+migi)/2;
					if(suretu[mid]==bubun[i]) {		//探したい値と探す配列のまん中の数字と一致した時合致
						gacchi++;
						break;
					}
					else if(bubun[i]<suretu[mid]) {		//真ん中の数字と探したい数字の大小　真ん中のほうが大きいときは　右（MAX）が真ん中
						migi=mid;
					}
					else {				//中央が探すものより小さい時、一番左を大きくする。
						hidari=mid+1;
					}
				}
			}
			System.out.println(gacchi);
		} moji=bfr.readLine() moji bfr.readLine() bfr.readLine bfr suretu_kazu=Integer.parseInt(moji) suretu_kazu Integer.parseInt(moji) Integer.parseInt Integer moji moji=bfr.readLine() moji bfr.readLine() bfr.readLine bfr srt=moji.split(" ") srt moji.split(" ") moji.split moji " " suretu=new int[suretu_kazu] suretu new int[suretu_kazu] suretu_kazu for(int i=0; i<suretu_kazu; i++) {
				suretu[i]=Integer.parseInt(srt[i]);
			} int i=0; int i=0; i 0 i<suretu_kazu i suretu_kazu i++ i++ i {
				suretu[i]=Integer.parseInt(srt[i]);
			} {
				suretu[i]=Integer.parseInt(srt[i]);
			} suretu[i]=Integer.parseInt(srt[i]) suretu[i] suretu i Integer.parseInt(srt[i]) Integer.parseInt Integer srt[i] srt i moji=bfr.readLine() moji bfr.readLine() bfr.readLine bfr bubun_nokazu=Integer.parseInt(moji) bubun_nokazu Integer.parseInt(moji) Integer.parseInt Integer moji moji=bfr.readLine() moji bfr.readLine() bfr.readLine bfr bbn=moji.split(" ") bbn moji.split(" ") moji.split moji " " bubun=new int[bubun_nokazu] bubun new int[bubun_nokazu] bubun_nokazu for(int i=0; i<bubun_nokazu; i++) {
				bubun[i]=Integer.parseInt(bbn[i]);
			} int i=0; int i=0; i 0 i<bubun_nokazu i bubun_nokazu i++ i++ i {
				bubun[i]=Integer.parseInt(bbn[i]);
			} {
				bubun[i]=Integer.parseInt(bbn[i]);
			} bubun[i]=Integer.parseInt(bbn[i]) bubun[i] bubun i Integer.parseInt(bbn[i]) Integer.parseInt Integer bbn[i] bbn i int hidari=0; hidari 0 int migi=suretu_kazu; migi suretu_kazu int mid=0; mid 0 for(int i=0; i<bubun_nokazu; i++) {
				hidari=0;
				migi=suretu_kazu;
				mid=0;
				while(hidari<migi) {
					mid=(hidari+migi)/2;
					if(suretu[mid]==bubun[i]) {		//探したい値と探す配列のまん中の数字と一致した時合致
						gacchi++;
						break;
					}
					else if(bubun[i]<suretu[mid]) {		//真ん中の数字と探したい数字の大小　真ん中のほうが大きいときは　右（MAX）が真ん中
						migi=mid;
					}
					else {				//中央が探すものより小さい時、一番左を大きくする。
						hidari=mid+1;
					}
				}
			} int i=0; int i=0; i 0 i<bubun_nokazu i bubun_nokazu i++ i++ i {
				hidari=0;
				migi=suretu_kazu;
				mid=0;
				while(hidari<migi) {
					mid=(hidari+migi)/2;
					if(suretu[mid]==bubun[i]) {		//探したい値と探す配列のまん中の数字と一致した時合致
						gacchi++;
						break;
					}
					else if(bubun[i]<suretu[mid]) {		//真ん中の数字と探したい数字の大小　真ん中のほうが大きいときは　右（MAX）が真ん中
						migi=mid;
					}
					else {				//中央が探すものより小さい時、一番左を大きくする。
						hidari=mid+1;
					}
				}
			} {
				hidari=0;
				migi=suretu_kazu;
				mid=0;
				while(hidari<migi) {
					mid=(hidari+migi)/2;
					if(suretu[mid]==bubun[i]) {		//探したい値と探す配列のまん中の数字と一致した時合致
						gacchi++;
						break;
					}
					else if(bubun[i]<suretu[mid]) {		//真ん中の数字と探したい数字の大小　真ん中のほうが大きいときは　右（MAX）が真ん中
						migi=mid;
					}
					else {				//中央が探すものより小さい時、一番左を大きくする。
						hidari=mid+1;
					}
				}
			} hidari=0 hidari 0 migi=suretu_kazu migi suretu_kazu mid=0 mid 0 while(hidari<migi) {
					mid=(hidari+migi)/2;
					if(suretu[mid]==bubun[i]) {		//探したい値と探す配列のまん中の数字と一致した時合致
						gacchi++;
						break;
					}
					else if(bubun[i]<suretu[mid]) {		//真ん中の数字と探したい数字の大小　真ん中のほうが大きいときは　右（MAX）が真ん中
						migi=mid;
					}
					else {				//中央が探すものより小さい時、一番左を大きくする。
						hidari=mid+1;
					}
				} hidari<migi hidari migi {
					mid=(hidari+migi)/2;
					if(suretu[mid]==bubun[i]) {		//探したい値と探す配列のまん中の数字と一致した時合致
						gacchi++;
						break;
					}
					else if(bubun[i]<suretu[mid]) {		//真ん中の数字と探したい数字の大小　真ん中のほうが大きいときは　右（MAX）が真ん中
						migi=mid;
					}
					else {				//中央が探すものより小さい時、一番左を大きくする。
						hidari=mid+1;
					}
				} mid=(hidari+migi)/2 mid (hidari+migi)/2 (hidari+migi) hidari migi 2 if(suretu[mid]==bubun[i]) {		//探したい値と探す配列のまん中の数字と一致した時合致
						gacchi++;
						break;
					}
					else if(bubun[i]<suretu[mid]) {		//真ん中の数字と探したい数字の大小　真ん中のほうが大きいときは　右（MAX）が真ん中
						migi=mid;
					}
					else {				//中央が探すものより小さい時、一番左を大きくする。
						hidari=mid+1;
					} suretu[mid]==bubun[i] suretu[mid] suretu mid bubun[i] bubun i {		//探したい値と探す配列のまん中の数字と一致した時合致
						gacchi++;
						break;
					} gacchi++ gacchi break; if(bubun[i]<suretu[mid]) {		//真ん中の数字と探したい数字の大小　真ん中のほうが大きいときは　右（MAX）が真ん中
						migi=mid;
					}
					else {				//中央が探すものより小さい時、一番左を大きくする。
						hidari=mid+1;
					} bubun[i]<suretu[mid] bubun[i] bubun i suretu[mid] suretu mid {		//真ん中の数字と探したい数字の大小　真ん中のほうが大きいときは　右（MAX）が真ん中
						migi=mid;
					} migi=mid migi mid {				//中央が探すものより小さい時、一番左を大きくする。
						hidari=mid+1;
					} hidari=mid+1 hidari mid+1 mid 1 System.out.println(gacchi) System.out.println System.out System System.out gacchi String[] args args
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

class Main{
	public static void main(String[] args) {

		int suretu_kazu=0;
		int[] suretu;
		int bubun_nokazu=0;
		int[] bubun;
		String moji="";
		String[] srt;
		String[] bbn;
		int gacchi=0;

		BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in));

		try {
			moji=bfr.readLine();
			suretu_kazu=Integer.parseInt(moji);
			moji=bfr.readLine();
			srt=moji.split(" ");
			suretu=new int[suretu_kazu];
			for(int i=0; i<suretu_kazu; i++) {
				suretu[i]=Integer.parseInt(srt[i]);
			}
			moji=bfr.readLine();
			bubun_nokazu=Integer.parseInt(moji);
			moji=bfr.readLine();
			bbn=moji.split(" ");
			bubun=new int[bubun_nokazu];
			for(int i=0; i<bubun_nokazu; i++) {
				bubun[i]=Integer.parseInt(bbn[i]);
			}

			int hidari=0;
			int migi=suretu_kazu;
			int mid=0;

			for(int i=0; i<bubun_nokazu; i++) {
				hidari=0;
				migi=suretu_kazu;
				mid=0;
				while(hidari<migi) {
					mid=(hidari+migi)/2;
					if(suretu[mid]==bubun[i]) {		//探したい値と探す配列のまん中の数字と一致した時合致
						gacchi++;
						break;
					}
					else if(bubun[i]<suretu[mid]) {		//真ん中の数字と探したい数字の大小　真ん中のほうが大きいときは　右（MAX）が真ん中
						migi=mid;
					}
					else {				//中央が探すものより小さい時、一番左を大きくする。
						hidari=mid+1;
					}
				}
			}
			System.out.println(gacchi);
		}catch(IOException e) {

		}
	}
}
