rendered paste body#include <stdio.h>
#include <string.h>
char inp[100];
int minlevel,maxlevel;
int found = 0;
int max(int x,int y)
{
if(x > y)
return x;
return y;
}
int process(char* x,int level)
{
int len = 0;
int i = 0;
len = strlen(x);
//now the return conditions
if(len <= 1)
return len;
//string does not hav /
int slashfound = 0;
for(i = 0;i < len;i++)
if(x[i] == '/')
{
slashfound = 1;
break;
}
if(!slashfound)
{
int count = 0;
for(i = 0;i < len;i++)
if(x[i] != '{' && x[i] != '}')
count++;
return count;
}
if(minlevel > level)
minlevel = level;
if(maxlevel < level)
maxlevel = level;
found = 1;
//if the string has / then return the max of the process of numerator and denominator
char nr[100];
int nrlen = 0;
char de[100];
int delen = 0;
int ans = 0;
int top = 0;
//skip the non '{' symbols
for(i = 0;i < len && x[i] != '{';i++,ans++);
do
{
if(x[i] == '{')
top++;
else if(x[i] == '}')
top--;
nr[nrlen++] = x[i++];
}while(top > 0 && i < len);
if(nrlen > 1)
nr[nrlen-1] = '\0';
else
nr[nrlen] = '\0';
//now we hav the numerator
if(x[i] == '/')
{
i++;
do
{
if(x[i] == '{')
top++;
else if(x[i] == '}')
top--;
de[delen++] = x[i++];
}while(top > 0 && i < len);
if(delen > 1)
de[delen-1] = '\0';
else
de[delen] = '\0';
int x,y;
if(nrlen == 1)
x = process(nr,level+1);
else
x = process(nr+1,level+1);
if(delen == 1)
y = process(de,level-1);
else
y = process(de+1,level-1);
ans += max(x,y);
ans += 2;
}
else
ans += process(nr+1,level);
ans += process(x+i,level);
return ans;
}
int main()
{
scanf("%s",inp);
int ans;
ans = process(inp,0);
if(found)
printf("%d %d",ans,(2*(1+maxlevel - minlevel))+1);
else
printf("%d 1",ans);
return 0;
}