#include<bits/stdc++.h>
using namespace std;
int dp[45][45][45][45];
int a[100][100];
bool vis[25];
int cur[4];
int dfs(int cnt)
{
int Max=0;
if(dp[cur[0]][cur[1]][cur[2]][cur[3]]!=-1)
{
return dp[cur[0]][cur[1]][cur[2]][cur[3]];
}
if(cnt==5)
{
return dp[cur[0]][cur[1]][cur[2]][cur[3]]=0;
}
for(int i=0;i<4;i++)
{
if(cur[i]==0)
{
continue;
}
int c=a[i][cur[i]];
cur[i]--;
if(vis[c]==false)
{
vis[c]=true;
Max=max(Max,dfs(cnt+1));
vis[c]=false;
}
else
{
vis[c]=false;
Max=max(Max,dfs(cnt-1)+1);
vis[c]=true;
}
cur[i]++;
}
return dp[cur[0]][cur[1]][cur[2]][cur[3]]=Max;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF&&n)
{
if(n==0)
{
return 0;
}
memset(dp,-1,sizeof(dp));
memset(vis,false,sizeof(vis));
cur[0]=n;
cur[1]=n;
cur[2]=n;
cur[3]=n;
for(int i=0;i<4;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
printf("%d\n",dfs(0));
}
return 0;
}
样例过了,但WA了qwq