#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int hashy[1000]={0};//存最后存入的哈希值为i的量的内存编号
int nexty[20000];//存每个内存的上一个同哈希值量的内存的编号
char data[20000][1000];//存数据
int cnt=0;
int u;
inline void hash_insert(char * zfc)
{
int len=strlen(zfc);
int val=0;
for(int i=0;i<len;i++)val=(val+(zfc[i])*437)%997;//生成哈希值
cnt++;
strcpy(data[cnt],zfc);
nexty[cnt]=hashy[val];
hashy[val]=cnt;//放入量,模拟链表结构
}
inline bool hash_find(char *zfc)
{
int len=strlen(zfc);
int val=0;
for(int i=0;i<len;i++)val=(val+(zfc[i])*437)%997;
u=hashy[val];
while(u)//查询
{
if(strcmp(data[u],zfc)==0)return true;
u=nexty[u];
}
return false;
}
char dr[1000];
inline void dy(char*zfc)//读入(读优)
{
int d=0;
char dr=getchar();
while(!(dr==' '||(dr>='0'&&dr<='9')||(dr>='A'&&dr<='z')))dr=getchar();
while(dr==' '||(dr>='0'&&dr<='9')||(dr>='A'&&dr<='z'))zfc[d++]=dr,dr=getchar();
}
int main()
{
int n,m;
int day=0;
cin>>n>>m;
for(int i=0;i<n;i++)
{
memset(dr,0,sizeof(dr));
dy(dr);
hash_insert(dr);
}
for(int i=0;i<m;i++)
{
memset(dr,0,sizeof(dr));
dy(dr);
if(hash_find(dr))day++;//计数
}
printf("%d",day);
return 0;
}