Easiest Solution || Beats 100% || Right Intuition and Approach || 7 lines of Code 
CodeIntuitionQuestion is to make both strings equal using at max 1 swap operation.Observation 1: 
Swap Operation cannot bring in new characters in the string.Th
# Code
```cpp []
class Solution {
public:
    bool areAlmostEqual(string s1, string s2) {
        int diff=0;
        vector<int> f1(26),f2(26);
        for(int i=0;i<s1.size();i++){
            if(s1[i]!=s2[i])diff++;
            f1[s1[i]-'a']++;
            f2[s2[i]-'a']++;
        }
        if(f1 == f2 && diff <=2)return true;
        else return false;
    }
};
```
# Intuition
<!-- Describe your first thoughts on how to solve this problem. -->
Question is to make both strings equal using at max 1 swap operation.

`Observation 1: `
Swap Operation cannot bring in new characters in the string.Therefore Number of Distinct Characters in both the strings should be equal and at the same time their frequency should be same.
```
Example:
With any number of swap operation we cannot make :
"za" and "ga" equal.
"aab" and "abb" equal. //Freq of each character is different
```
`Observation 2:`
In one swap operation, positon of only two characters can be changed.
```
Example: 
"aabb" ! = "bbaa"
```
# Approach
<!-- Describe your approach to solving the problem. -->
```
Frequency of each Character can be calculated in O(n) complexity.
Number of Positions where characters are different can also be calculated 
in O(n) Time.
In the end if the Freq Table Doesn't Match Or Number of Positions where 
characters are different is greater than 2 then it's going to be a false. 
And if they do then TRUE;
```

# Complexity
- Time complexity: O(n)
<!-- Add your time complexity here, e.g. $$O(n)$$ -->

- Space complexity: O(1)
<!-- Add your space complexity here, e.g. $$O(n)$$ -->



['Hash Table', 'String', 'Counting', 'C++']