Задача очень распространенная, на самом деле, так что отыскать решение на просторах интернета не составило бы труда