Butler's 3-run shot lifts Royals over Red Sox 6-4