Since it is not in CNF we can't take A->a but we can take A->aa i.e. two terminals. We could have taken three, four anything but to get the highest no. of reductions we consider two as one is not allowed.

Also to increase the number of reductions the productions should be in the form of X->YZ i.e. two non terminals reduced to 1.

Why don't we take X->Y form? I feel that if this was allowed then no. of reductions could have not been derived because lets say our productions are S->A, A->B, B->C, C->c. So no. of reductions needed to reduce "c" to S is c->C-; C->B; B->A; A->S is **4**. Now to get highest no. of reductions we can just keep on increasing this unit productions as much as we can i.e. S->A, A->B, B->C, C->D, D->E; E->c. So now to reduce c we take **6** reductions. So these unit productions cannot be considered here in our question. Hence we take X->YZ form.

Comparing it with the CNF's formula:

What we did in case of CNF: If "n" is the length of string,** each **character of the string can be reduced to **one** **non terminal**. So no. of non terminals obtained in the 1st reduction (in bottom up manner is "n" since one terminal reduced to exactly one non terminal) is "n".

Now these "n" non terminals form the leaf nodes of a binary tree. Such binary tree(where every non-leaf node has 2 children i.e. productions are in the form of X->YZ) with n leaf nodes takes (2n-1) moves to reduce to the start symbol.

Here in this question, **two terminals** reduce to **one non terminal**.

So n terminals reduce to n/2 non terminals. Now this binary tree contains n' leaf nodes where n'=n/2.

As already mentioned, such binary tree takes (2n'-1) moves to reduce to start symbol so (2*n/2-1)=(n-1) moves is reqd.