When it comes to hair color changes in Adobe Photoshop, it's generally best to start with lighter colors and then transition to darker hues. The reason for this is that hair with lighter colors typically has more detail. This means you can easily darken specific areas while still preserving the existing hair detail.

Let’s start from creating a new Solid Color adjustment layer. Choose the color of your choice and click OK. Click on the layer mask and invert it by pressing Command+I on Mac or Ctrl+I on Windows. 

Use the Luminosity Mask inside the Gizmo Panel to make a selection. Choose Select > Select and Mask to Launch the Select and Mask workspace. Use the Brush Tool and hold Option key on Mac or Alt key on Windows to subtract from the refinement area.

Output refined selection to the Layer Mask. In the Blend Mode pop-up menu scroll over to “Soft Light”. 

Add a Level adjustment layer. 

Copy a Layer Mask from the top layer by press-and-hold Alt key on Windows or Option key on Mac, then click-and-drag it to Levels layer. Adjust tonal range of Levels layer by moving Midtones and Highlights to the left. 

To remove imperfections from the image, select two top layers and move them to the group by pressing Command+G on Mac or Ctrl+G on Windows. Let’s add a layer mask to the group. Use the Brush Tool. Use black foreground color and low opacity to gently paint over the area of the image to hide imperfections.