#include<bits/stdc++.h> 
using namespace std; 
#define MAX_CHARS 160 
// Diese Funktion gibt true zurück, wenn str1 und str2 ismorph sind 
bool areIsomorphic(string str1, string str2) 
{ 
  int m = str1.length(), n = str2.length(); 
  // Länge beider Strings muss gleich sein für eins zu eins 
  // Entsprechung 
  if (m != n) 
  return false; 
  // Um besuchte Zeichen in str2 zu markieren boolmarked 
  [MAX_CHARS] = {false}; 
  // Um die Zuordnung jedes Zeichens von str1 zu 
  // dem von str2 zu speichern. Initialisieren Sie alle Einträge der Karte als -1. 
  int-Map[MAX_CHARS]; 
  memset(map, -1, sizeof(map)); 
  // Verarbeite alle Zeichen nacheinander 
  für (int i = 0; i < n; i++)
  { 
    // Wenn das aktuelle Zeichen von str1 zum ersten 
    Mal // darin gesehen wird. 
    if (map[str1[i]] == -1) 
    { 
      // Wenn das aktuelle Zeichen von str2 bereits 
      // gesehen wird, ist eine Eins-zu-Eins-Zuordnung nicht möglich 
      if (marked[str2[i]] == true) 
        return false; 
      // Aktuelles Zeichen von str2 als besucht 
      markieren markiert[str2[i]] = true; 
      // Speichere die Zuordnung der aktuellen Zeichen 
      map[str1[i]] = str2[i]; 
    } 
    // Wenn dies nicht das erste Auftreten des aktuellen 
    // Zeichens in str1 ist, dann prüfen Sie, ob das vorherige 
    // Aussehen dem gleichen Zeichen von str2 zugeordnet ist 
    else if (map[str1[i]] != str2[i]) 
      return false;
  } 
  true zurückgeben; 
} 
// Treiberprogramm 
int main() 
{ 
cout << areIsomorphic("bbb", "yyy") << endl; 
cout << areIsomorphic("aab", "yyz") << endl; 
0 zurückgeben; 
}