code: def SpamsumDistance(ssA, ssB):
      '''
      returns the spamsum distance between ssA and ssB
      if they use a different block size, assume maximum distance
      otherwise returns the LevDistance
      '''
      mA = re.match('^(\d+)[:](.*)$', ssA)
      mB = re.match('^(\d+)[:](.*)$', ssB)
  
      if mA == None or mB == None:
        raise "do not appear to be spamsum signatures"
  
      if mA.group(1) != mB.group(1):
        return max([len(mA.group(2)), len(mB.group(2))])
      else:
        return LevDistance(mA.group(2), mB.group(2)f SpamsumDistance(ssA, ssB):
      '''
      returns the spamsum distance between ssA and ssB
      if they use a different block size, assume maximum distance
      otherwise returns the LevDistance
      '''
      mA = re.match('^(\d+)[:](.*)$', ssA)
      mB = re.match('^(\d+)[:](.*)$', ssB)
  
      if mA == None or mB == None:
        raise "do not appear to be spamsum signatures"
  
      if mA.group(1) != mB.group(1):
        return max([len(mA.group(2)), len(mB.group(2))])
      else:
        return LevDistance(mA.group(2), mB.group(2))
docs: returns the spamsum distance between ssA and ssB
      if they use a different block size, assume maximum distance
      otherwise returns the LevDistance