#include<bits/stdc++.h>
using namespace std;
int row[20],dig1[20],dig2[20],arr[20];
bool isSafe(int r,int c){
if(row[r] || dig1[r+c] || dig2[8 + r-c]) return false;
return true;
}
void placeQ(int c){
for(int r=1; r<=8; r++){
if(isSafe(r,c)){
row[r] = dig1[r + c] = dig2[8 + r - c] = 1;
return;
}
}
}
int main(){
memset(dig1,0,sizeof dig1);
memset(dig2,0,sizeof dig2);
memset(row,0,sizeof row);
while( scanf("%d",&arr[1]) != EOF){
for(int i=2; i<=8; i++){
cin >> arr[i];
row[ arr[i] ] = dig1[ i+arr[i] ] = dig2[ 8 + arr[i]-i ] = 0;
}
int counter = 0;
for(int c=1; c<=8; c++){
if( !isSafe(arr[c],c) ){
counter++;
row[c] = dig1[ c + arr[c] ] = dig2[ 8 + arr[c]-c ] = 0;
placeQ(c);
}
}
cout << counter << endl;
}
return 0;
}