diff --git a/src/Form/RolesCompareForm.php b/src/Form/RolesCompareForm.php
index beb270b..1edd40f 100755
--- a/src/Form/RolesCompareForm.php
+++ b/src/Form/RolesCompareForm.php
@@ -93,6 +93,17 @@ class RolesCompareForm extends FormBase {
       '#title' => $this->t('Role 2'),
       '#options' => user_role_names(),
     );
+    $form['permission_type'] = array(
+      '#type' => 'select',
+      '#required' => TRUE,
+      '#title' => $this->t('Permission type'),
+      '#options' => array(
+        'all_permissions' => 'All permissions',
+        'matched_permissions' => 'Matched permissions',
+        'different_permissions' => 'Different permissions'
+      ),
+      '#default_value' => 'different_permissions'
+    );
     $form['actions'] = array('#type' => 'actions');
     $form['actions']['submit'] = array(
       '#type' => 'submit',
@@ -100,7 +111,7 @@ class RolesCompareForm extends FormBase {
       '#button_type' => 'primary',
     );
 //    if ($form_state->isExecuted()) {
-    $this->printRoleDiff($form, $form_state);
+    $this->printRolePermissions($form, $form_state);
 //    }
     return $form;
   }
@@ -110,22 +121,30 @@ class RolesCompareForm extends FormBase {
    * @param FormStateInterface $form_state
    * @return array
    */
-  public function printRoleDiff(array &$form, FormStateInterface $form_state) {
+  public function printRolePermissions(array &$form, FormStateInterface $form_state) {
     if ($form_state->isExecuted()) {
+      $permission_type = $form_state->getValue('permission_type');
       $doc_options['attributes'] = array('class' => 'permission-link');
       $role1 = $form_state->getValue('select_role1');
       $role2 = $form_state->getValue('select_role2');
       $role1_permissions = $this->getRolePermission($role1);
       $role2_permissions = $this->getRolePermission($role2);
+      $role_match = array_merge(
+        array_intersect($role2_permissions, $role1_permissions), array_intersect($role1_permissions, $role2_permissions)
+      );
       $role_diff = array_merge(
         array_diff($role2_permissions, $role1_permissions), array_diff($role1_permissions, $role2_permissions)
       );
-      if (!empty($role_diff)) {
         $permissions = $this->permissionHandler->getPermissions();
         $listedPermissions = array();
         foreach ($permissions as $permission_name => $permission) {
-          if (in_array($permission_name, $role_diff))
-            $listedPermissions[$permission_name] = $permission;
+          if ($permission_type == 'different_permissions' && in_array($permission_name, $role_diff)) {
+              $listedPermissions[$permission_name] = $permission;
+          } elseif ($permission_type == 'matched_permissions' && in_array($permission_name, $role_match)) {
+              $listedPermissions[$permission_name] = $permission;
+          } elseif ($permission_type == 'all_permissions') {
+              $listedPermissions[$permission_name] = $permission;
+          }
         }
         $form['permissions'] = array(
           '#type' => 'table',
@@ -162,15 +181,16 @@ class RolesCompareForm extends FormBase {
           '#value' => $this->t('Update Permissions'),
           '#button_type' => 'primary',
         );
-      } else {
-        $form['no_diff'] = array(
-          '#markup' => 'Both the selected roles has similar permissions',
-        );
-      }
+        if (empty($listedPermissions)) {
+          $form['no_diff'] = array(
+            '#markup' => 'No results found for the selected roles and the selected permission type',
+          );
+        }
       return $form;
     }
   }
 
+
   /**
    * {@inheritdoc}
    */
