#include <bits/stdc++.h>
using namespace std;
int big = 9999999;
int link[10];
int used[10];
int graph[10][10];
int NodeNumber;
int findRoad(int leftNode) {
  int rightNode;
  for (rightNode = 1; rightNode <= NodeNumber; ++rightNode) {
    if (0 == used[rightNode] && graph[leftNode][rightNode] != 0) {
      used[rightNode] = 1;
      if (0 == link[rightNode] || 1 == findRoad(link[rightNode])) {
        link[rightNode] = leftNode;
        return 1;
      }
    }
  }
  return 0;
}
int match() {
  memset(link, 0, sizeof(link));
  int leftNode, matchNumber;
  matchNumber = 0;
  for (leftNode = 1; leftNode <= NodeNumber; ++leftNode) {
    memset(used, 0, sizeof(used));
    if (1 == findRoad(leftNode)) matchNumber++;
  }
  return matchNumber;
}
int main() {
  char a[10][10];
  NodeNumber = 8;
  memset(graph, 0, sizeof(graph));
  for (int i = 0; i < 8; ++i) scanf("%s", a[i]);
  int x = 0, y = 0;
  for (int i = 0; i < 8; ++i) {
    bool flag = true;
    for (int j = 0; j < 8; ++j) {
      if (a[i][j] == 'W') {
        flag = false;
        break;
      }
    }
    if (flag) ++x;
  }
  for (int j = 0; j < 8; ++j) {
    bool flag = true;
    for (int i = 0; i < 8; ++i) {
      if (a[i][j] == 'W') {
        flag = false;
        break;
      }
    }
    if (flag) ++y;
  }
  if (x == 8 && y == 8) y = 0;
  printf("%d\n", x + y);
  return 0;
}
