Least significant digit (LSD) radix sort of strings
This macro name is misleading:

#define ALPHABET 36


The alphabet consists of 26 letters, not 36.  But in a CS context, this can be implied (in this case, it appears to include A-Z and 0-9).

However, this macro is storing the alphabet's size, not the alphabet itself.  The name should clearly specify that.  A more appropriate name could be ALPHABET_LENGTH.

On another note, the other macro should be renamed to PLATE_LENGTH.  Underscores are commonly used to separate each word in a macro.
Avoid single-character variable names:

int R = ALPHABET;
int W = string_size;


Based on the context (fortunately), I can tell that these hold sizes.  Other than that, they are very unclear and could lead to maintenance problems at some point.  Always give variables descriptive names, unless they're simple loop counters.
You have the list-displaying code in main() twice.  Why not make it a function?  This will reduce the amount of code in main() and maintain DRY, making it clearer to read and to maintain.

void display(char list[], int n)
{
    for (int i = 0; i &lt; n; i++)
        printf("%s\n", plates[i]);
}


You could keep the label outputs in main(), right before the function calls.