Open In App

Python | Count the Number of matching characters in a pair of string

Last Updated : 11 Dec, 2025
Comments
Improve
Suggest changes
18 Likes
Like
Report

Given two strings, the task is to count the number of characters that appear in both strings, ignoring case and duplicates if needed.

Example:

Input:
s1 = "apple"
s2 = "grape"

Output: 3

Below are the several methods to perform this task:

Using Set Intersection

This method converts both strings into sets and finds common characters using the intersection.

Python
s1 = "apple"
s2 = "grape"

res = len(set(s1.lower()) & set(s2.lower()))
print(res)

Output
3

Explanation:

  • s1.lower(), s2.lower(): Converts both strings to lowercase for case-insensitive comparison.
  • set(...): Removes duplicates and allows fast comparison.
  • & (intersection): Finds characters common to both sets.
  • len(): Counts the number of common characters.

Using List Comprehension

This method iterates through one string and checks if each unique character exists in the other string.

Python
s1 = "apple"
s2 = "grape"
res = len([c for c in set(s1.lower()) if c in set(s2.lower())])
print(res)

Output
3

Explanation:

  • set(...): Ensures only unique characters are considered.
  • List comprehension collects characters present in both strings.

Using a For Loop

This method manually iterates through each character of one string and counts matches in the other string.

Python
s1 = "apple"
s2 = "grape"

a = s1.lower()
b = s2.lower()
res = 0

for c in set(a):
    if c in b:
        res += 1

print(res)

Output
3

Explanation:

  • a = s1.lower(), b = s2.lower(): Convert strings to lowercase for case-insensitive comparison.
  • set(a): Get unique characters from s1.
  • for c in set(a): if c in b: Check if each unique character exists in s2.
  • res += 1: Count each matching character.

Explore