import tensorflow as tf


                vz = tf.contrib.lookup.MutableHashTable(key_dtype=tf.string,
                                                        value_dtype=tf.int64,
                                                        default_value=-1)

                vx_keys = tf.reshape(tf.Variable([], collections=[], dtype=tf.string), (-1, 1))
                vz_keys = tf.reshape(tf.Variable([], collections=[], dtype=tf.string), (-1, 1))

                x_t = tf.gather(x, l)
                x_t_len = tf.strings.length(x_t)
                x_t = tf.string_split([x_t], delimiter='').values

                z_t = tf.gather(y, m)
                z_t_len = tf.strings.length(z_t)
                z_t = tf.string_split([z_t], delimiter='').values

                for i in tf.range(start=0, limit=x_t_len - self._p + 1, delta=1, dtype=None, name='range'):
                    u = tf.string_join(x_t[i:i + self._p], '')
                    vx_keys, r = tf.cond(
                        tf.greater(vx.lookup(u), -1),
