Your confusion certainly comes from the fact the underlying on which the put option is written is not the stock anymore but rather another option. We call that a compound option in derivatives lingo.
How would you price the option if it were a simple put expiring at $T=2$ and not an obscure put-on-call? Well, you would have started at the end of the period representing the maturity of your option (here the put expiries at $T=2$, so this is the end of the second period) and for each tree node you found there, call them $S_{uu}=S(0)(1+u)^2, S_{ud}=S(0)(1+u)(1+d)$ and $S_{dd}=S(0)(1+d)^2$ for up-up, up-down and down-down states, you would have set the option value as equal to its payoff. For a standard put option, because you know the value which the stock takes on the 3 different tree nodes, this would have given: $P_{uu}=\max(K_p - S_{uu},0)$, $P_{ud}=\max(K_p - S_{ud},0)$ and $P_{dd}=\max(K_p - S_{dd},0)$. Once done, you would have then worked your way up to the root by backwards induction, computing $P_{u}$ and $P_{d}$ and finally inferring $P$.
The only thing that changes here, is that the underlying consists of a call option rather than the stock. At the end of the second period, your put-on-call option is therefore worth $P_{uu}=\max(K_p - C_{uu},0)$, $P_{ud}=\max(K_p - C_{ud},0)$ and $P_{dd}=\max(K_p - C_{dd},0)$. This is precisely what is meant by the formula
$$H(T=2) = \max(K_p - C_E(2), 0)$$
where $C_E(2)$ represents the value at $T=2$ of a European call option with maturity $T=3$ and strike $X$ as given in your exercise.
Now finding $C_E(2)$ (in other words the values $C_{uu}, C_{ud}$ and $C_{dd}$) is a standard binomial tree pricing problem and is exactly what you already did above:
- Use a 3-period binomial tree. Start at the end of the tree and set the option value as equal to its payoff, that is: $C_{uuu}=\max(S_{uuu}-X,0)$, $C_{uud}=\max(S_{uud}-X,0)$, $C_{ddu}=\max(S_{ddu}-X,0)$ and $C_{ddd}=\max(S_{ddd}-X,0)$). Then move backwards by one period to obtain the desired values $C_{uu}, C_{ud}$ and $C_{dd}$.
- Now that you understood how it works, you see that you could also have simply 'extended' the tree on which you were working to price the put(-on-call) option and use the extra part to find the value at $T=2$ of the call option.
Anyway, once you have determined the values $P_{uu}$, $P_{ud}$ and $P_{dd}$ of the put-on-call option at $T=2$ (the values you came up with for $C_{uu}$, $C_{ud}$ and $C_{dd}$ in your tree above i.e. $33.905$, $10.476$ and $0$ are perfectly fine), you can go back to using the standard approach. Simply move backwards computing $P_{u}$ and $P_{d}$ and finally $P$ and you're done!