#include <iostream>
#include <vector>
using namespace std;
char g[6][7];
int row[6];
int f[6][1<<6][1<<12];
inline bool valid(int x) {
int ret = 0;
while(x) {
x &= (x-1);
ret += 1;
}
return ret == 3;
}
int pre(int k, int j) {
int col[6] = {0};
for(int i = 0; i < 6; i++) {
col[i] = k%4;
k = k/4;
}
for(int i = 5; i >= 0; i--) {
int num = (1 & (j>>i));
col[i] -= num;
if(col[i] < 0) return -1;
}
int ret = 0;
for(int i = 5; i >= 0; i--) {
ret = 4*ret+col[i];
}
return ret;
}
int main() {
const int n=6;
for(int i = 0; i < 6; i++) {
scanf("%s", g[i]);
for(int j=0; j<n; j++) {
row[i] = (row[i]<<1) | (g[i][j]=='.' ? 0:1);
}
}
for(int j=0; j < (1<<n); j++) {
if((j & row[0]) != row[0] || !valid(j)) continue;
int k = 0;
for(int i=5; i>=0; i--) {
k = k*4 + (j & (1<<i) ? 1:0);
}
f[0][j][k] = 1;
}
for(int i=1; i<n; i++) {
for(int j=0; j < (1<<n); j++) {
if((j & row[i]) != row[i] || !valid(j)) continue;
int k = 0;
for(k = 0; k < (1<<12); k++) {
int k2 = pre(k, j);
if(k2 == -1) continue;
for(int j2=0; j2<(1<<n); j2++) {
f[i][j][k] += f[i-1][j2][k2];
}
}
}
}
int res = 0;
for(int i=0; i<(1<<n); i++) {
res += f[5][i][(1<<12)-1];
}
cout << res << endl;
return 0;
}