let rec replace (s1 : string) (s2 : string) (s : string) =
        let l_s1 = String.length s1 in
        let l_s2 = String.length s2 in
        let rec replace_aux s pos =
                let l_s = String.length s in
                if(l_s1>l_s) then s
                else if(l_s1=l_s && s1=s) then s2
                else(
                        let l_s = String.length s in
                        let tmp_pos = indexStr  s1 (String.sub s pos (l_s-(pos+0)) ) in 
                        let new_pos = pos+tmp_pos in
                        if(tmp_pos<>(-1))
                        then(
                                if(new_pos > pos)
                                then replace_aux ((String.sub s 0 new_pos)^s2^(String.sub s (new_pos+l_s1) (l_s-new_pos-l_s1) )) (new_pos+l_s2)
                                else ((String.sub s 0 new_pos)^s2^(String.sub s (new_pos+l_s1) (l_s-new_pos-l_s1) ))
                        )
                        else s
                )
        in 
        replace_aux s 0