#include using namespace std; int n,m; char s1[25][55]; char s2[25][55]; int tol,head[55]; struct edge{ int to,next; }es[2510]; void addedge( int u , int v ){ es[tol].to = v; es[tol].next = head[u]; head[u] = tol++; } int linker[55],ans[55],un; bool used[55]; bool dfs( int u ){ for( int i=head[u] ; i!=-1 ; i=es[i].next ){ int v = es[i].to; if( !used[v] ){ used[v] = true; if( linker[v]==-1||dfs(linker[v]) ){ linker[v] = u; ans[u] = v; return true; } } } return false; } int hungary(){ int res = 0; memset( linker , -1 , sizeof(linker) ); for( int u=1 ; u<=un ; u++ ){ memset( used , false , sizeof(used) ); if( dfs(u) ) res++; } return res; } bool ok( int a , int b ){ for( int i=0 ; i