Hi , Can we think about in this way.

Let the string be **1100**c*1100**=***w**cW

So first part we put in a stackA(**1100**). So at the bottom of the stackA, it has the 1 at the bottom and the top we have 0. Then c is pushed into StackA. Once the PDA sees the symbol 'c', it will start popping the topmost terminal if it finds the same symbol as next input.

But the next immediate input symbol is 1 (*1100*) and top of stackA is 0. So it can't do pop operations.

So the next (1100) we have to put into another stackB . So stackB has 1 at bottom and 0 at top.

Now pop 'o' (top most)from stackB and push it to stackA. Stack A has the top most symbol '0' and seeing '0' as an next input symbol which is coming from stackB,, the action would be remove the top element from stackA.

And this process will continue until we empty the stackB which will also ensure empty of StackA.

The main purpose of taking the StackB is to reverse the second part of strings. So that we can push the second part of the string in reverse order to StackA whatever we have pushed in first part.

That's why we find **W**cW(r) is context free as we need only one stack. Here second part is already reversed.

However wc**W **is context sensitive as for the second part we need to reverse which needs an additional stack. So it is not context free.