Veteran walks 3,000 miles across US to raise money for charity