#include <stdio.h>
#define M 11
#define N 16
int data[M][N];
void input(){
int i,j;char c;
for(i=0;i<M;i++){
for(j=0;j<N;j++){
c=getchar();
/* printf("input=%d\n",c);*/
if(c!=10){data[i][j]=c-48;}
if(c==10){j--;}
}
}
}
void q_abi(int use[M],int see[N],double abi[M]){
int i,j,n;
for(i=0;i<M;i++){
abi[i]=0;n=0;
for(j=0;j<N;j++){
if((use[i]==1)&&(see[j]==1)){
/*
printf("data[%d][%d]=%d,abi[%d]=%lf\n",i,j,data[i][j],i,abi[i]);
*/ n++;
abi[i]=abi[i]+data[i][j];
}
}
/* printf("abi[%d]=%.2lf n=%d abi/n=%lf |p|=%lf\n",
i,abi[i],n,abi[i]/n,(abi[i]/n-0.5)*(abi[i]/n-0.5));
*/
if(n>0){
abi[i]=(abi[i]/n-0.5)*(abi[i]/n-0.5);}
if(n==0){abi[i]=1;}
/* printf("== abi[%d]=%.4lf\n",i,abi[i]);
*/ }
}
void crear(int use[M],int see[N],double abi[M]){
int i;
for(i=0;i<M;i++){use[i]=1;}
for(i=0;i<N;i++){see[i]=1;}
for(i=0;i<M;i++){abi[i]=0.0;}
}
int cho_abi(int use[M],int see[N],double abi[M]){
int i,n;double tmp=1;
for(i=0;i<M;i++){
if(abi[i]<tmp){
tmp=abi[i];
n=i;
}
}
printf("cho q=%d\n",n);
return n;
}
void kaiseki(int n,int use[M],int see[N],double abi[M]){
int seetmp[N];
int mem,x,i;
q_abi(use,see,abi);
x=cho_abi(use,see,abi);
use[x]=0;
printf("use[%d]=0\n",x);
mem=0;
for(i=0;i<N;i++){
mem=mem+see[i];
}
printf("mem=%d\n", mem);
if(mem>2){
/*x問題=0のメンバを抽出*/
for(i=0;i<N;i++){
seetmp[i]=0;
if((data[x][i]==1)&&(see[i]==1)){
seetmp[i]=1;
}
}
kaiseki(n+1,use,seetmp,abi);
/*x問題=1のメンバを抽出*/
for(i=0;i<N;i++){
seetmp[i]=0;
if((data[x][i]==0)&&(see[i]==1)){
seetmp[i]=1;
}
}
kaiseki(n+1,use,seetmp,abi);
}
if(mem==2){
printf("ans=%d\n",n);
}
}
int main(){
int use[M];int see[N];double abi[M];
crear(use,see,abi);
input();
kaiseki(1,use,see,abi);
return;
}