#include<bits/stdc++.h>
using namespace std;
const int N=7e4+10;
inline int read()
{
int s=0,w=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9')s=(s<<1)+(s<<3)+(ch^48),ch=getchar();
return s*w;
}
int n,f[N],w[N],h[N],p[20],ax[20],ay[20],bx[20],by[20],c[20];
vector<int>v[100];
signed main()
{
n=read();
for(int i=1;i<=n;i++)
{
ay[i]=read();ax[i]=read();by[i]=read();bx[i]=read();c[i]=read();
v[by[i]].push_back(i);
}
for(int i=1;i<=n;i++)
{
int o=ay[i];
for(int j=0;j<v[o].size();j++)
{
int id=v[o][j];
if(((ax[id]>=ax[i]&&ax[id]<bx[i])||(ay[id]>ax[i]&&ay[id]<=ay[i]))&&c[id]!=c[i])
{
p[i]|=(1<<(id-1));
}
}
}
for(int i=0;i<(1<<n);i++)
{
f[i]=0x3f3f3f3f;
int o=0;
for(int j=1;j<=n;j++)
{
if((i>>(j-1))&1)
{
if((o|(1<<(c[j]-1)))!=o)
{
o|=(1<<(c[j]-1));
w[i]++;
}
h[i]|=p[j];
}
}
}
f[0]=0;
for(int i=0;i<(1<<n);i++)
{
for(int j=i;j;j=(j-1)&i)
{
if(((i-j)|h[j])!=(i-j))continue;
f[i]=min(f[i],f[i-j]+w[j]);
}
}
cout<<f[(1<<n)-1]<<"\n";
return 0;
}