import java.util.*;
import java.io.*;

class Main {

   Scanner in;
   PrintWriter out;

   final String INPUT_FILE_NAME = "input.txt";
   final String OUTPUT_FILE_NAME = "output.txt";

   void solve() {
      
      char inp[] = in.nextLine().toCharArray();
      
      int depth = 0;
      int maxDepth = 0;
      
      for (int i = 0; i < inp.length; i++) {
         if (inp[i] == 'd') {
            depth++;
            maxDepth = Math.max(maxDepth, depth);
         } else {
            depth--;
         }
      }
      out.print(maxDepth+" ");
      depth = 0;
      int levels[] = new int[10001];
      for (int i = 0; i < inp.length; i++) {
         if (inp[i] == 'd') {
            depth++;
            levels[depth]++;
         } else {
            depth--;
         }
      }
      Arrays.sort(levels);
      boolean wasPrev = false;
      int dep2 = 0;
      for (int i = levels.length-1; i>0; i--){
         if (levels[i]>0 && !wasPrev){
            dep2+=levels[i]-1;
            wasPrev = true;
         }else if (wasPrev && levels[i]>0){
            dep2--;
            dep2+=levels[i]-1;
         }
      }
      out.print(maxDepth+Math.max(0, dep2));
      
   }

   void run() {
      try {
         in = new Scanner(new FileReader(INPUT_FILE_NAME));
         out = new PrintWriter(OUTPUT_FILE_NAME);
      } catch (IOException e) {
         throw new Error(e);
      }
      try {
         solve();
      } finally {
         out.close();
      }
   }

   public static void main(String[] args) {
      new Main().run();

   }
}

// class Scanner {
// StreamTokenizer in;
//
// Scanner(Reader r) {
// in = new StreamTokenizer(new BufferedReader(r));
// in.resetSyntax();
// in.whitespaceChars(0, 32);
// in.wordChars(33, 255);
// }
//
// String next() {
// try {
// in.nextToken();
// return in.sval;
// } catch (Exception e) {
// throw new Error();
// }
// }
//
// double nextDouble() {
// return Double.parseDouble(next());
// }
//
// int nextInt() {
// return Integer.parseInt(next());
// }
//
// long nextLong() {
// return Long.parseLong(next());
// }
// }
