program reiskinys;
  { 98 u‘davinys }

  procedure tarpai (var reisk : string);
    { pažalina tarpus iž reižkinio reižk prad‘ios }
  begin

    while (reisk[1] = ' ') do
      delete (reisk, 1, 1);
  end;
  function skaicius (reisk : string): integer;
    { reižk - reižkinys, prasidedantis skai‡iumi }
    { funkcija randa jo ilgŤ }
    var ilgis : integer;
  begin
    ilgis := 1;
    while reisk[ilgis] in ['0'..'9', '.'] do
     ilgis := ilgis + 1;
     { gal b–t tai dar ne skai‡iaus pabaiga, o realaus skai‡iaus laipnis }
    if reisk[ilgis] in ['e', 'E']
       then begin
              ilgis := ilgis + 2;
              while reisk[ilgis] in ['0'..'9'] do
                ilgis := ilgis + 1
            end;
    ilgis := ilgis - 1;
    skaicius := ilgis
  end;

  function kintamasis (reisk : string): integer;
    { reižk - reižkinys, prasidedantis kintamuoju }
    { funkcija randa jo ilgŤ }
    var ilgis : integer;
  begin
    ilgis := 1;
    while reisk[ilgis] in ['A'..'Z', 'a'..'z', '0'..'9'] do
      ilgis := ilgis + 1;
    ilgis := ilgis - 1;
    kintamasis := ilgis
  end;

  procedure skaiciuoti (reisk : string; { pradinis reižkinys }
                        var sk, kint, op : integer);
                        { kiek riežkinyje yra skai‡i—, kitam—j— ir operacij— }
     { suskai‡iuoja kiek reižkinyje yra skai‡i—, kintam—j— ir operacij— }
     var ilgis : integer;
  begin
    tarpai (reisk); { pažalinami tarpai reižkinio priekyje }
    { numetamas minusas reižkinio priekyje }
    if reisk[1] = '-'
       then delete (reisk, 1, 1);
    tarpai (reisk);
    sk := 0;
    kint := 0;
    op := 0;
    while reisk <> '=' do  { kol neižnagrin‚jome viso reižkinio }
      begin
        { reižkinys prasid‚s arba skai‡iumi, arba kintamojo vardu }
        if reisk[1] in ['0'..'9']
           then begin
                  ilgis := skaicius (reisk);
                  sk := sk + 1;
                end
           else begin
                  ilgis := kintamasis (reisk);
                  kint := kint + 1;
                end;
        { pažaliname t… skai‡i— ar kintam…jŤ }
        delete (reisk, 1, ilgis);
        tarpai (reisk);
        { jei tai ne reižkinio pabaiga, randame aritmetinŠ operacij… }
        if reisk <> '='
           then begin
                  if reisk[1] in ['+', '-', '*', '/']
                     then ilgis := 1
                     else ilgis := 3; { operacijos div arba mod }
                  delete (reisk, 1, ilgis);
                  op := op + 1
                end;
        tarpai (reisk);
      end;
  end;

  var f : text;
      reisk : string;
      sk, kint, op : integer;
begin
  assign (f, 'reisk.dat');
  reset (f);
  readln (f, reisk);
  close (f);
  skaiciuoti (reisk, sk, kint, op);
  assign (f, 'reisk.rez');
  rewrite (f);
  writeln (f, sk, ' ', kint, ' ',op);
  close (f);
end.