Stepper Motor not moving accurately

I wonder if when you send 4 u's that your program runs too quickly and the second or third u is called before the stepper has finished moving. To test this add an extra delay() at the end of loop();

You should really replace all the delays with the technique in the Blink Without Delay example sketch.

You don't need to repeat Serial.begin(). That is only needed once in setup().

Why, Why, WHY ....

... have you repeated what is virtually the same code in each case statement

Put that code in a function and call it from the case statements with an appropriate parameter.

Repeating yards (metres) of code like that is an invitation for typing errors and it's a nightmare when something needs to be changed.

...R