#include <iostream>
using namespace std;
extern int gNum = 0;
struct Infor
{
char word;
struct Infor *lchild, *rchild;
};
class Test
{
public:
Test();
void CreatTree();
void PreTree();
private:
struct Infor *m_pRoot;
};
Test::Test()
{
m_pRoot = NULL;
}
static int CreatTrees(struct Infor *p, int k)
{
struct Infor *q = NULL;
char word;
cin >> word;
if ('#' != word)
{
q = new struct Infor;
q->word = word;
q->lchild = NULL;
q->rchild = NULL;
if (1 == k)
{
p->lchild = q;
}
if (2 == k)
{
p->rchild = q;
}
CreatTrees(q, 1);
CreatTrees(q, 2);
}
return 0;
}
void Test::CreatTree()
{
struct Infor *p = NULL;
char word;
cin >> word;
if ('#' == word)
{
return;
}
p = new struct Infor;
p->word = word;
p->lchild = NULL;
p->rchild = NULL;
m_pRoot = p;
CreatTrees(p, 1);
CreatTrees(p, 2);
}
static int PreTrees(struct Infor *p)
{
if (NULL != p)
{
gNum += 1;
PreTrees(p->lchild);
PreTrees(p->rchild);
}
return 0;
}
void Test::PreTree()
{
struct Infor *p = NULL;
p = m_pRoot;
PreTrees(p);
}
int main()
{
freopen("1.txt", "r", stdin);
Test t1;
t1.CreatTree();
t1.PreTree();
if (0 == gNum)
{
cout << "NULL" << endl;
}
else
{
cout << gNum << endl;
}
return 0;
}