Print string from arduino to serial monitor
String.concat() takes a String as the second argument. Serial.read() returns an int. The compiler creates code that converts the int into a String similar to this:

input.concat(String(Serial.read()));


This is not what you want.

Let's tell the compiler what you really want instead:

input.concat((char)Serial.read());


This will tell the compiler to do the following:

input.concat(String((char)Serial.read()));


We are now having the compiler call the correct String constructor, and the code will work as we expect.