#include <bits/stdc++.h>
using namespace std;
string s;int a[7][7];
bool isWallPartitioned(int x,int y){
if(x==0&&y>0&&y<6&&a[1][y]==1&&a[0][y+1]==0&&a[0][y-1]==0)return true;
if(x==6&&y>0&&y<6&&a[5][y]==1&&a[6][y+1]==0&&a[6][y-1]==0)return true;
if(y==0&&x>0&&x<6&&a[x][1]==1&&a[x+1][0]==0&&a[x-1][0]==0)return true;
if(y==6&&x>0&&x<6&&a[x][5]==1&&a[x+1][6]==0&&a[x-1][6]==0)return true;
else return false;
}
bool isLooped(int x,int y){
if(x==0||x==6||y==0||y==6)return false;
if(a[x][y+1]==1&&a[x][y-1]==1&&a[x-1][y]==0&&a[x+1][y]==0)return true;
if(a[x+1][y]==1&&a[x-1][y]==1&&a[x][y+1]==0&&a[x][y-1]==0)return true;
return false;
}
int solve(int x,int y,int i){
if(x==6&&y==0){
if(i==48)return 1;
return 0;
}
if(i==48){
return 0;
}
if(isWallPartitioned(x,y))return 0;
if(isLooped(x,y))return 0;
if(s[i]=='?'){
int r[]={0,1,0,-1};
int c[]={-1,0,1,0};
int k=0;
for(int j=0;j<4;j++){
int xx= x+r[j];
int yy= y+c[j];
if(xx<0||xx>6)continue;
if(yy<0||yy>6)continue;
if(a[xx][yy]==1)continue;
a[xx][yy]=1;
k+=solve(xx,yy,i+1);
a[xx][yy]=0;
}
return k;
}
if(s[i]=='L')y--;
else if(s[i]=='R')y++;
else if(s[i]=='D')x++;
else if(s[i]=='U')x--;
if(x<0||x>6)return 0;
if(y<0||y>6)return 0;
if(a[x][y]==1)return 0;
a[x][y]=1;
int k=solve(x,y,i+1);
a[x][y]=0;
return k;
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
a[0][0]=1;
cin>>s;
cout<<solve(0,0,0);
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJpbmcgcztpbnQgYVs3XVs3XTsKCmJvb2wgaXNXYWxsUGFydGl0aW9uZWQoaW50IHgsaW50IHkpewoJCWlmKHg9PTAmJnk+MCYmeTw2JiZhWzFdW3ldPT0xJiZhWzBdW3krMV09PTAmJmFbMF1beS0xXT09MClyZXR1cm4gdHJ1ZTsKICAgICAgICBpZih4PT02JiZ5PjAmJnk8NiYmYVs1XVt5XT09MSYmYVs2XVt5KzFdPT0wJiZhWzZdW3ktMV09PTApcmV0dXJuIHRydWU7CiAgICAgICAgaWYoeT09MCYmeD4wJiZ4PDYmJmFbeF1bMV09PTEmJmFbeCsxXVswXT09MCYmYVt4LTFdWzBdPT0wKXJldHVybiB0cnVlOwogICAgICAgIGlmKHk9PTYmJng+MCYmeDw2JiZhW3hdWzVdPT0xJiZhW3grMV1bNl09PTAmJmFbeC0xXVs2XT09MClyZXR1cm4gdHJ1ZTsKICAgICAgICBlbHNlIHJldHVybiBmYWxzZTsKfQpib29sIGlzTG9vcGVkKGludCB4LGludCB5KXsKCWlmKHg9PTB8fHg9PTZ8fHk9PTB8fHk9PTYpcmV0dXJuIGZhbHNlOwoJaWYoYVt4XVt5KzFdPT0xJiZhW3hdW3ktMV09PTEmJmFbeC0xXVt5XT09MCYmYVt4KzFdW3ldPT0wKXJldHVybiB0cnVlOwoJaWYoYVt4KzFdW3ldPT0xJiZhW3gtMV1beV09PTEmJmFbeF1beSsxXT09MCYmYVt4XVt5LTFdPT0wKXJldHVybiB0cnVlOwoJcmV0dXJuIGZhbHNlOwp9CgoKaW50IHNvbHZlKGludCB4LGludCB5LGludCBpKXsKCQoJaWYoeD09NiYmeT09MCl7CgkJaWYoaT09NDgpcmV0dXJuIDE7CgkJcmV0dXJuIDA7Cgl9CglpZihpPT00OCl7CgkJcmV0dXJuIDA7Cgl9CglpZihpc1dhbGxQYXJ0aXRpb25lZCh4LHkpKXJldHVybiAwOwoJaWYoaXNMb29wZWQoeCx5KSlyZXR1cm4gMDsKCWlmKHNbaV09PSc/Jyl7CgkJaW50IHJbXT17MCwxLDAsLTF9OwoJCWludCBjW109ey0xLDAsMSwwfTsKCQlpbnQgaz0wOwoJCWZvcihpbnQgaj0wO2o8NDtqKyspewoJCQlpbnQgeHg9IHgrcltqXTsKCQkJaW50IHl5PSB5K2Nbal07CgkJCWlmKHh4PDB8fHh4PjYpY29udGludWU7CgkJCWlmKHl5PDB8fHl5PjYpY29udGludWU7CgkJCWlmKGFbeHhdW3l5XT09MSljb250aW51ZTsKCQkJYVt4eF1beXldPTE7CgkJCWsrPXNvbHZlKHh4LHl5LGkrMSk7CgkJCWFbeHhdW3l5XT0wOwoJCX0KCQlyZXR1cm4gazsKCX0KIAoJaWYoc1tpXT09J0wnKXktLTsKCWVsc2UgaWYoc1tpXT09J1InKXkrKzsKCWVsc2UgaWYoc1tpXT09J0QnKXgrKzsKCWVsc2UgaWYoc1tpXT09J1UnKXgtLTsKCWlmKHg8MHx8eD42KXJldHVybiAwOwoJaWYoeTwwfHx5PjYpcmV0dXJuIDA7CglpZihhW3hdW3ldPT0xKXJldHVybiAwOwoJYVt4XVt5XT0xOwoJaW50IGs9c29sdmUoeCx5LGkrMSk7CglhW3hdW3ldPTA7CglyZXR1cm4gazsKCQp9CgppbnQgbWFpbigpIHsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsKCWFbMF1bMF09MTsKCWNpbj4+czsKCWNvdXQ8PHNvbHZlKDAsMCwwKTsKCXJldHVybiAwOwp9