// https://omegaup.com/arena/problem/Reconociendo-cadenas-generadas-L/
#include <iostream>
#include <string>

bool espera(const std::string& cad, int& i, char terminal) {
   if (cad[i] == terminal) {
      ++i;
      return true;
   }
   return false;
}

bool intenta(const std::string& cad, int& i, char no_terminal) {
   if (no_terminal == 'S') {
      if (cad[i] == 'w' && cad[i + 1] == 'w') {
         i += 2;
         return intenta(cad, i, 'T');
      } else {
         if (!espera(cad, i, 'w') ||      // el orden de las comparaciones importa
             !espera(cad, i, 'x') || 
             !intenta(cad, i, 'S') ||
             !espera(cad, i, 'y') ||
             !intenta(cad, i, 'T') ||
             !espera(cad, i, 'z')) {
            return false;
         }
         return true;
      }
   } else if (no_terminal == 'T') {
      if (cad[i] == 'z') {
         ++i;
         return true;
      } else {
         if (!espera(cad, i, 'y') ||      // el orden de las comparaciones importa
             !intenta(cad, i, 'T') || 
             !intenta(cad, i, 'S')) {
            return false;
         }
         return true;
      }
   }
   return false;
}

int main( ) {
   std::string cad;
   while (std::cin >> cad) {
      int i = 0;
      std::cout << (intenta(cad, i, 'S') && i == cad.size( )) << "\n";
   }
}
