String matching and algorithmic problems in free groups