abcfabdhabegacdeacghadfgaefhbcdgbcehbdefbfghcdfhcefgdegh