Manually worked-out example of barter-set algorithm: Suppose the category is girls names, and each person knows only 5 names: User knows: betty, susan, mary, joyce, patricia. Host knows: susanna, susan, marie, joan, wilma. Note that only one complete name "susan" is in common, but several prefixes of various lengths are also in common. User must propose the first letter of one of the names he knows, either b s m j or p. So, for example, the exchange might go like this: User: b \ Host doesn't know anything starting with b, so: | Host: (switch) s | User does know something that starts with s, so user adds another letter: User: [s]u | :the prefix in brackets is the part both players share. Host: [su]s | User: [sus]a | Host: [susa]n | User: [susan]. | :user has indicated that was a completed item he has. User must now backtrack to most recent other branch he already had, and extend it: User: {b}e / Since this was a branch the host already denied having, the host must backtrack to the most recent branch he had and extend it: Host: [susan]n User doesn't know anything starting with that, so must backtrack: User: {be}t Host: {susann}a User: {bet}t Host: {susanna}. User: {bett}y Host finished the word just above, so must now backtrack, but there's nothing remaining except the null context: Host: m User: [m]a Host: [ma]r User: [mar]y Host can't match that, so backtracks to last shared prefix: Host: [mar]i User: [mar]{y}. Host: [mar]{i}e User finished the word just above, so must now backtrack: User: {betty}. Host: [mar]{ie}. User finished the word just above, so must now backtrack, to null context: User: j Host: [j]o User: [jo]y Host: [jo]a User: [jo]{y}c Host: [jo]{a}n User: [jo]{yc}e Host: [jo]{an}. User: [jo]{yce}. Host: w User: p Host: {w}i User: {p}a Host: {wi}l User: {pa}t Host: {wil}m User: {pat}r Host: {wilm}a User: {patr}i Host: {wilma}. User: {patri}c Host: (no more to provide, will need to move next if this ever continues later) Summary up to this point: User knows: {betty.} [susan.] [mar]{y.} [jo]{yce.} {patric}(ia.) Host knows: [susan]{na.} [susan.] [mar]{ie.} [jo]{an.} {wilma.} where [...] were known by both, {...} were exchanged, (...) are still secret. Everything has been exchanged or agreed-both-known except last two letters and terminator of one user's word which remain secret.