The issue is because of this route
Route::get('/{country}/{state}', [StateController::class, 'index']);
When you put it infront of the other routes Laravel by default doesn't know what {country} should be so it will for example see cuisine in route 4 as a match for {country} and therefore it will use this route and not look further for the other route.
You can either place route 3 as last or add where method or use a middleware to check if the url contains an actual country. Personally I would just put it as the last route since that's the easiest solution to your issue.
https://laravel.com/docs/11.x/routing#parameters-regular-expression-constraints