diff --git a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
index 71efb5f..f6061fd 100644
--- a/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
+++ b/genomix/genomix-data/src/main/java/edu/uci/ics/genomix/type/VKmerBytesWritable.java
@@ -675,7 +675,12 @@
         }
         return new KmerBytesWritable(bytes, kmerStartOffset);
     }
-        
+    
+    /**
+     * return the edit distance required to transform kemr1 into kmer2 using substitutions, insertions, and deletions.
+     * 
+     * This uses the classic dynamic programming algorithm and takes O(length_1 * length_2) time and space. 
+     */
     public static int editDistance(VKmerBytesWritable kmer1, VKmerBytesWritable kmer2) {
     	int rows = kmer1.getKmerLetterLength() + 1, columns = kmer2.getKmerLetterLength() + 1, r=0, c=0, match=0;
     	int[][] distMat = new int[rows][columns];
@@ -703,9 +708,25 @@
     private static int min(int a, int b, int c) {
     	return a <= b ? (a <= c ? a : c) : (b <= c ? b : c);
     }
+    private static int min(int a, int b) {
+        return a <= b ? a : b;
+    }
     
     public int editDistance(VKmerBytesWritable other) {
     	return editDistance(this, other);
     }
+    
+    /**
+     * return the fractional difference between the given kmers.  This is the edit distance divided by the smaller length.
+     * 
+     * Note: the fraction may be larger than 1 (when the edit distance is larger than the kmer)
+     */
+    public static float fracDissimilar(VKmerBytesWritable kmer1, VKmerBytesWritable kmer2) {
+        return editDistance(kmer1, kmer2) / (float) min(kmer1.getKmerLetterLength(), kmer2.getKmerLetterLength());
+    }
+    
+    public float fracDissimilar(VKmerBytesWritable other) {
+        return fracDissimilar(this, other);
+    }
 
 }
diff --git a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/VKmerBytesWritableTest.java b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/VKmerBytesWritableTest.java
index 7460776..9bf728d 100644
--- a/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/VKmerBytesWritableTest.java
+++ b/genomix/genomix-data/src/test/java/edu/uci/ics/genomix/data/test/VKmerBytesWritableTest.java
@@ -564,6 +564,7 @@
     	
     	Assert.assertEquals(kmer1.editDistance(kmer2), 3);
     	Assert.assertEquals(kmer1.editDistance(kmer2), kmer2.editDistance(kmer1));
+    	Assert.assertEquals(kmer1.fracDissimilar(kmer2), .75f);
     	
     	kmer1.setAsCopy("");
     	Assert.assertEquals(kmer1.editDistance(kmer2), kmer2.getKmerLetterLength());
@@ -572,6 +573,8 @@
     	kmer2.setAsCopy("");
     	Assert.assertEquals(kmer1.editDistance(kmer2), kmer2.getKmerLetterLength());
     	Assert.assertEquals(kmer1.editDistance(kmer2), kmer2.editDistance(kmer1));
+    	
+    	
     }
 
 }
