void main(){ import std.stdio, std.string, std.conv, std.algorithm; int n; rd(n); auto ss=new string[](n); foreach(i; 0..n) rd(ss[i]); sort(ss); auto mm=new int[][](n, n); foreach(i; 0..n)foreach(j; 0..i){ int k=0; while(kremaining, 0->used foreach_reverse(i; 0..(1<>j&1) m++; foreach(j; 0..n)if(i>>j&1){ auto c=0; foreach(k; 0..n)if(i>>k&1) c=max(c, mm[j][k]); (dp[i^(1<