2 2 12345 54321 4 12345 6789A BCDEF 0137F
6 7
//#pragma comment(linker, "/STACK:1024000000,1024000000") #include <iostream> #include <cstdio> #include <cmath> #include <vector> #include <cstring> #include <algorithm> #include <string> #include <set> #include <stack> #include <time.h> #include <map> #include <queue> #define INF 0x3f3f3f3f using namespace std; const int MAXN = 1e5+7; const int MAXM = 1e4+7; int tree[MAXN][2]; int pow16[10]; char str[10]; int a[25]; int temp[25]; int num[MAXN]; int main() { int T; int n; pow16[0]=1; for(int i=1; i<7; ++i) pow16[i]=pow16[i-1]*16; cin>>T; while(T--) { // 12345 74565/ //memset(tree,0,sizeof(tree)); scanf("%d",&n); // root=new(node); // int flag=0; for(int i=0; i<n; ++i) { scanf("%s",str); long long p=0,ans=0; for(int j=0; j<5; ++j) { if(str[j]<='9'&&str[j]>='0') p=str[j]-'0'; else p=str[j]-'A'+10; ans+=p*pow16[4-j]; } num[i]=ans; //cout<<"ans:"<<ans<<endl; } //cout<<"ans:"<<ans<<endl; int Max=21; srand(time(NULL)); for(int i=0; i<300006; ++i) { int shit=rand()%n; int fuck=rand()%n; if(shit==fuck)continue; int p=num[shit]^num[fuck]; int ans=0; while(p) { ans+=p&1; p>>=1; } if(ans<Max)Max=ans; } //cout<<Max<<endl; printf("%d\n",Max); // in_sert(a); } return 0; }