#include<bits/stdc++.h>
#define Y first
#define X second
usingnamespacestd;usingpii=pair<int,int>;constintSZ=5;constintdy[]={-1,1,0,0};constintdx[]={0,0,-1,1};stringboard[SZ];boolmask[SZ*SZ],vis[SZ][SZ],conn[SZ][SZ];boolis_correct(piisrc){queue<pii>q;q.push(src);vis[src.Y][src.X]=true;intadj=0,dasom=0;while(!q.empty()){piicur=q.front();q.pop();adj++;dasom+=board[cur.Y][cur.X]=='S';for(intdir=0;dir<4;dir++){intny=cur.Y+dy[dir];intnx=cur.X+dx[dir];if(ny<0||nx<0||ny>=SZ||nx>=SZ)continue;if(!conn[ny][nx]||vis[ny][nx])continue;q.push({ny,nx});vis[ny][nx]=true;}}returnadj==7&&dasom>=4;}intmain(void){ios::sync_with_stdio(0);cin.tie(0);intans=0;for(inti=0;i<SZ;i++)cin>>board[i];fill(mask+7,mask+SZ*SZ,true);do{fill_n(&vis[0][0],SZ*SZ,false);fill_n(&conn[0][0],SZ*SZ,false);piisrc={-1,-1};for(inti=0;i<SZ*SZ;i++){if(!mask[i]){inty=i/5;intx=i%5;conn[y][x]=true;if(src.Y==-1)src={y,x};}}ans+=is_correct(src);}while(next_permutation(mask,mask+SZ*SZ));cout<<ans;return0;}