public int search(char[] word)	{
		int i, j, k;
		ST_NODE tmpnode = new ST_NODE();
		ST_NODE rnode = null;
		int child;
		byte cs;

		for (i = 0, j = 0; j < word.length && i < this.search_end; i++) {
			if (word[j] == this.search_word[i])
				j++;
			else break;
		}

		this.search_end = i;
		if (this.search_end == 0 ) {
			cs = this.head.s_node.CS;
			child = this.head.s_node.child;
		} else {
			child = this.search_idx[this.search_end-1];
			cs = this.nf[child].node.CS;
			child = this.nf[child].node.child;
		}
		while (j < word.length && cs != 0) {
			tmpnode.K=word[j];
			rnode = null;

			for (k = child; k < child + cs; k++){
				if (tmpnode.K == this.nf[k].node.K){
					rnode = this.nf[k].node;
					break;
				}
			}

			if (rnode == null) break;
			else {
				this.search_word[this.search_end] = word[j];
				this.search_idx[this.search_end] = k;
				this.search_end++;
				j++;
				child = this.nf[k].node.child;
				cs = this.nf[k].node.CS;
			}
		}
		return this.search_end;
	}