#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define nl "\n"
#define OO 0x3f3f3f3f
using namespace std;
const int dx[] = {0, 0, 1, -1, -1, -1, 1, 1};
const int dy[] = {1, -1, 0, 0, 1, -1, 1, -1};
void ta2to2a()
{
    ios_base::sync_with_stdio(false), cout.tie(nullptr), cin.tie(nullptr);
#ifndef ONLINE_JUDGE
    freopen("input.txt", "r", stdin);
    freopen("output.txt", "w", stdout);
#endif
}
vector<vector<char>> grid;
bool isValid(int x, int y)
{
    return x >= 0 && x < 8 && y >= 0 && y < 8 && grid[x][y] != '*';
}
bool visited[8][8] = {false};
ll ways(int x)
{
    ll ans = 0;
    if (x == 8)
    {
        return 1;
    }
    for (int i = 0; i < 8; i++)
    {
        if (isValid(x, i) && !visited[x][i])
        {
            visited[x][i] = true;
            for (int j = 0; j < 8; j++)
            {
                visited[x][j] = true;
            }
            for (int j = 0; j < 8; j++)
            {
                visited[j][i] = true;
            }
            for (int j = 0; j < 8; j++)
            {
                for (int k = 0; k < 8; k++)
                {
                    if (abs(k - j) == abs(x - i))
                    {
                        visited[j][k] = true;
                    }
                }
            }
            ans += ways(x + 1);
        }
    }
    return ans;
}
void solve()
{
    grid = vector<vector<char>>(8, vector<char>(8));
    for (int i = 0; i < 8; i++)
    {
        for (int j = 0; j < 8; j++)
        {
            cin >> grid[i][j];
        }
    }
    cout << ways(0);
}
int main()
{
    ta2to2a();
    int t = 1;
    // cin >> t;
    while (t--)
    {
        solve();
    }
}