# Pyth, <s>33</s> 22 bytes #

This is my second attempt on Pyth :)

    qz_jk.__<z/t@+1*8lz2 2
                           print(
    q                       is_equal(
     z                       input(),
      _                       reverse(
       jk                      concat(
         ._                     all_prefixes(
           _                     reverse(
            <z                    input()[:
              /t@h*8lz2 2          divide(decrement(root(increment(multiply(8,len(z))),2)),2)
                                    ])))))

----

Previous attempt:

    KJ<z/t@+1*8lz2 2;WnkJ=K+K=JtJ;qKz

[Try it online!](https://pyth.herokuapp.com/?code=KJ%3Cz%2Ft%40%2B1*8lz2+2%3BWnkJ%3DK%2BK%3DJtJ%3BqKz&input=abcdbcdcdd&debug=0)

How it works:

    KJ<z/t@+1*8lz2 2;WnkJ=K+K=JtJ;qKz
                                        z=input()
    KJ<z/t@+1*8lz2 2                    K=J=z[:(root(1+8*len(z),2)-1)/2]
      <z                                    z[:
           +1*8lz                                    1+8*len(z)
          @      2                              root(          ,2)
         t                                                        -1
                     WnKJ               while not_equal(k,J):
                         =K+K=JtJ        K=plus(K,J=tail(J))
                                  qKz   equal(K,z)