#include using namespace std; #define ll long long const int inf = 1e9; struct MinCost{ struct edge{ int v, f, w, id;}; int n; vector> e; void ext(int x){ if(++x>n) e.resize(x), n=x;} void add(int x, int y, int c, int w){ ext(x), ext(y); e[x].push_back((edge){y, c, w, (int)e[y].size()}); e[y].push_back((edge){x, 0, -w, (int)e[x].size()-1}); } pair solve(int S, int T){ pair ans=make_pair(0, 0); while(1){ vector f(n+1), g(n+1), vis(n+1), dis(n+1, inf); queue q; q.push(S), f[S]=inf, dis[S]=0, vis[S]=1; while(!q.empty()){ int u=q.front(); q.pop(); for(auto &i:e[u]){ if(i.f && dis[u]+i.w f; for(int i=1; i<=n; ++i){ string s; cin>>s; ++f[s]; } for(int i=0; i<3; ++i) wish.add(10, i+1, a[i], 0); for(int i=0; i<6; ++i) wish.add(i+4, 11, f[ss[i]], 0); for(int i=0; i<3; ++i) for(int j=0; j<6; ++j) wish.add(i+1, 4+j, 1e7, ss[j][0]=='0'+i?-3:(ss[j][1]=='0'+i?-2:-1)); printf("%d\n", -wish.solve(10, 11).second); wish.n=0; wish.e.clear(); } return 0; }