#include <iostream>
using namespace std;
typedef struct char_BT_Node{
char value;
struct char_BT_Node *lchild;
struct char_BT_Node *rchild;
} char_BT_Node , *char_BT_Pointer;
int max_dis;
void Create_char_BTree( char_BT_Pointer & T ) {
char ch;
scanf( "%c" , & ch );
if( ch == ' ' ){
T = NULL;
}
else {
T = ( char_BT_Node * )malloc( sizeof( char_BT_Node ) );
T -> value = ch;
Create_char_BTree( T -> lchild );
Create_char_BTree( T -> rchild );
}
}
int get_max_distance( const char_BT_Node * T ) {
if( T == NULL ) {
return -1;
}
else {
//左子数结点距离T的最大距离
int l_height = get_max_distance( T -> lchild ) + 1;
//右子数结点距离T的最大距离
int r_height = get_max_distance( T -> rchild ) + 1;
//以T为根的树的最大结点间距是l_height + r_height
if( l_height + r_height > max_dis ) {
max_dis = l_height + r_height;
}
return l_height > r_height ? l_height : r_height;
}
}
int main() {
max_dis = 0;
char_BT_Pointer T = NULL;
Create_char_BTree( T );
get_max_distance( T );
printf( "%d\n" , max_dis );
return 1;
}