#include <cstdio>
#include <iostream>
#include <cstring>
#include <set>

using namespace std;

#define MaxN 110
#define LL long long

char str [ MaxN ];
set < char > S;
LL dp [ MaxN ][ 32 ][ 32 ][ 4 ];
int N;

LL solve ( int pos, int l1, int l2, bool L ){
  if ( pos == N )
    return L;

  if ( dp[pos][l1][l2][L] != -1 )
    return dp[pos][l1][l2][L];

  char c1 = 'A' + l1;
  char c2 = 'A' + l2;

  bool sam = S.count(c1) > 0 && S.count(c2) > 0;
  bool sug = S.count(c1) == 0 && S.count(c2) == 0;

  if ( str[pos] != '_' ){
    bool s = S.count(str[pos]) > 0;
    if ( ( pos > 1 ) && ( ( sam && s ) || ( sug && !s ) ) )
      return 0;
    else
      return solve ( pos + 1, l2, str[pos] - 'A', L | ( str[pos] == 'L' ) );
  }
  
  LL ret = 0;

  if ( pos < 2 ){
    for ( int i = 0; 'A' + i <= 'Z'; ++i ){
      char c = 'A' + i;
      ret += solve ( pos + 1, l2, i, L | ( c == 'L' ) );
    }
    return dp [ pos ][ l1 ][ l2 ][ L ] = ret;
  }


  for ( int i = 0; 'A' + i  <= 'Z'; ++i ){
    char c = 'A' + i;
    bool s = S.count(c) > 0;
    bool nl = L | ( c == 'L' );

    if ( sam && s ) continue;
    if ( sug && !s ) continue;

    ret += solve ( pos + 1, l2, i, nl );
  }

  return dp [ pos ][ l1 ][ l2 ][ L ] = ret;
}

int Sam [ ] = { 'A', 'E', 'I', 'O', 'U' };

int main ( void ){
  memset ( dp, -1, sizeof(dp) );
  scanf("%s",str);

  N = strlen(str);

  for ( int i = 0; i < 5; ++i )
    S.insert ( Sam[i] );

  printf("%lld\n",solve(0,0,0,0));

  return 0;
}

	 

   
