Go: package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
	"strings"
)

func main() {
	io := NewIo()
	defer io.Flush()
	for {
		s := io.NextLine()
		if s == "." {
			break
		}
		t := io.NextLine()
		if s == t {
			io.Println("IDENTICAL")
			continue
		}
		ss := strings.Split(s, "\"")
		tt := strings.Split(t, "\"")
		if len(ss) != len(tt) {
			io.Println("DIFFERENT")
			continue
		}
		cnt := 0
		for i := 0; i < len(ss); i++ {
			if i%2 == 0 {
				if ss[i] != tt[i] {
					cnt = -1
					break
				}
			} else {
				if ss[i] != tt[i] {
					cnt++
				}
			}
		}
		if cnt > 1 || cnt == -1 {
			io.Println("DIFFERENT")
		} else {
			io.Println("CLOSE")
		}
	}
}

// I/O template
type Io struct {
	reader    *bufio.Reader
	writer    *bufio.Writer
	tokens    []string
	nextToken int
}

func NewIo() *Io {
	return &Io{
		reader: bufio.NewReader(os.Stdin),
		writer: bufio.NewWriter(os.Stdout),
	}
}

func (io *Io) Flush() {
	err := io.writer.Flush()
	if err != nil {
		panic(err)
	}
}

func (io *Io) NextLine() string {
	var buff []byte
	for {
		line, isPrefix, err := io.reader.ReadLine()
		if err != nil {
			panic(err)
		}
		buff = append(buff, line...)
		if !isPrefix {
			break
		}
	}
	return string(buff)
}

func (io *Io) Next() string {
	for io.nextToken >= len(io.tokens) {
		line := io.NextLine()
		io.tokens = strings.Fields(line)
		io.nextToken = 0
	}
	s := io.tokens[io.nextToken]
	io.nextToken++
	return s
}

func (io *Io) NextInt() int {
	i, err := strconv.Atoi(io.Next())
	if err != nil {
		panic(err)
	}
	return i
}

func (io *Io) NextFloat() float64 {
	i, err := strconv.ParseFloat(io.Next(), 64)
	if err != nil {
		panic(err)
	}
	return i
}

func (io *Io) Println(a ...interface{}) {
	fmt.Fprintln(io.writer, a...)
}

func (io *Io) Printf(format string, a ...interface{}) {
	fmt.Fprintf(io.writer, format, a...)
}

func (io *Io) PrintIntSlice(a []int) {
	b := []interface{}{}
	for _, x := range a {
		b = append(b, x)
	}
	io.Println(b...)
}

func (io *Io) PrintStringSlice(a []string) {
	b := []interface{}{}
	for _, x := range a {
		b = append(b, x)
	}
	io.Println(b...)
}

func Log(name string, value interface{}) {
	fmt.Fprintf(os.Stderr, "%s=%+v\n", name, value)
}

func ExampleIo() {
	io := NewIo()
	defer io.Flush()
	a := make([]int, 0, 3)
	a[0], a[1], a[2] = io.NextInt(), io.NextInt(), io.NextInt()
	io.Println(a)
	io.PrintIntSlice(a)
	Log("io", a)
}

C++: #include <bits/stdc++.h>
#define GET_MACRO(_1,_2,_3,_4,_5,_6,_7,_8,NAME,...) NAME
#define pr(...) cerr<< GET_MACRO(__VA_ARGS__,pr8,pr7,pr6,pr5,pr4,pr3,pr2,pr1)(__VA_ARGS__) <<endl
#define pr1(a) (#a)<<"="<<(a)<<" "
#define pr2(a,b) pr1(a)<<pr1(b)
#define pr3(a,b,c) pr1(a)<<pr2(b,c)
#define pr4(a,b,c,d) pr1(a)<<pr3(b,c,d)
#define pr5(a,b,c,d,e) pr1(a)<<pr4(b,c,d,e)
#define pr6(a,b,c,d,e,f) pr1(a)<<pr5(b,c,d,e,f)
#define pr7(a,b,c,d,e,f,g) pr1(a)<<pr6(b,c,d,e,f,g)
#define pr8(a,b,c,d,e,f,g,h) pr1(a)<<pr7(b,c,d,e,f,g,h)
#define prArr(a) {cerr<<(#a)<<"={";int i=0;for(auto t:(a))cerr<<(i++?", ":"")<<t;cerr<<"}"<<endl;}
using namespace std;
using Int = long long;
using _int = int;
using ll = long long;
using Double = long double;
const Int INF = (1LL<<60)+1e9; // ~ 1.15 * 1e18
const Int mod = (1e9)+7;
const Double EPS = 1e-8;
const Double PI = 6.0 * asin((Double)0.5);
using P = pair<Int,Int>;
template<class T> T Max(T &a,T b){return a=max(a,b);}
template<class T> T Min(T &a,T b){return a=min(a,b);}
template<class T1, class T2> ostream& operator<<(ostream& o,pair<T1,T2> p){return o<<"("<<p.first<<","<<p.second<<")";}
template<class T1, class T2, class T3> ostream& operator<<(ostream& o,tuple<T1,T2,T3> t){
  return o<<"("<<get<0>(t)<<","<<get<1>(t)<<","<<get<2>(t)<<")";}
template<class T1, class T2> istream& operator>>(istream& i,pair<T1,T2> &p){return i>>p.first>>p.second;}
template<class T> ostream& operator<<(ostream& o,vector<T> a){Int i=0;for(T t:a)o<<(i++?" ":"")<<t;return o;}
template<class T> istream& operator>>(istream& i,vector<T> &a){for(T &t:a)i>>t;return i;}


string erase(string s){
  string res;
  int n = s.size();
  int i = 0;
  while( i < n ){
    if(s[i] != '\"') res += s[i];
    else {
      while(s[++i] != '\"');
      res += ',';
    }
    i++;
  }
  return res;
}

vector<string> get(string s){
  vector<string> res;
  int n = s.size();
  int i = 0;
  while( i < n ){
    string tmp;
    if(s[i] != '\"');
    else while(s[++i] != '\"') tmp += s[i];
    i++;
    res.push_back(tmp);
  }
  return res;
}

int diff(vector<string> a,vector<string> b){
  int n =a.size();
  int cnt = 0;
  for(int i=0;i<n;i++) cnt += a[i] != b[i];
  return cnt;

}

signed main(){
  srand((unsigned)time(NULL));
  cin.tie(0);
  ios_base::sync_with_stdio(0);
  cout << fixed << setprecision(12);

  while(1){
    string s1, s2;
    cin>>s1;
    if(s1 == ".") return 0;
    cin>>s2;
  
    auto a1 = erase(s1), a2 = erase(s2);
    auto b1 = get(s1), b2 = get(s2);

    if(a1 == a2 && b1 == b2){
      cout<<"IDENTICAL"<<endl;
    }
    else if(a1 == a2 && diff(b1, b2) == 1){
      cout<<"CLOSE"<<endl;
    }
    else cout <<"DIFFERENT"<<endl;
  }
  
  return 0;
}

C++: #include<iostream>
#include<string>
#include<utility>

using namespace std;

int main(){

  char s1[200]={0};
  char s2[200]={0};
  char t1[200]={0};
  char t2[200]={0};
  int c,flag=0,j=0,k=0;

  cin>>s1>>s2;
 
  for(int i=0;i<200;i++){
    if(s1[i]=='"'){
      if(flag==0){
	flag=1;
	
      }else if(flag==1){
	flag=0;
	
      }
    }

    if(flag==1){
      t1[j]=s1[i];
      j++;
      
    }

  }
  j=0;

 for(int i=0;i<200;i++){

    if(s2[i]=='"'){
      if(flag==0){
	flag=1;
	
      }else if(flag==1){
	flag=0;
	
      }
    }

    if(flag==1){
      t2[j]=s2[i];
      j++;
    }

  }
 j=0;
 flag=0;

  cout<<t1<<endl;
 cout<<t2<<endl;

 //kyuukei~~~

   
  for(int i=0;i<150;i++){


    if(flag==1){
    if(t1[j]!=t2[k]){
      c++;
      flag=0;
    }

    if(t1[j]=='"' && t2[k]!='"'){
      j--;
    }
    if(t2[k]=='"' && t1[j]!='"'){
      k--;
    }

    j++;
    k++;

    }

   if(t1[j]=='"' && t2[k]=='"'){
     flag=1;

    }



  

  }


    if(c==0){
      cout<<"IDENTICAL"<<endl;
    }else if(c==1){
      cout<<"CLOSE"<<endl;
    }else{
      cout<<"DIFFERENT"<<endl;
    }
  
return 0;
}

C++: #include <iostream>
#include<bits/stdc++.h>
using namespace std;
string s,t;
int main(void){
    while(1){
    cin>>s;
    if(s==".")return 0;
    cin>>t;
    if(s==t){cout<<"IDENTICAL"<<endl;continue;}
    vector<int> v1,v2;
    vector<string>u1,u2;
    for(int i=0;i<s.size();i++){
        if(s[i]=='"')v1.push_back(i);
    }
    for(int i=0;i<v1.size();i+=2){
        u1.push_back(s.substr(v1[i]+1,v1[i+1]-v1[i]-1));
    }
    for(int i=0;i<t.size();i++){
        if(t[i]=='"')v2.push_back(i);
    }
    for(int i=0;i<v2.size();i+=2){
        u2.push_back(t.substr(v2[i]+1,v2[i+1]-v2[i]-1));
    }
    int cnt=0;
    if(u1.size()!=u2.size())cout<<"DIFFERENT"<<endl;
    else{
        for(int i=0;i<u1.size();i++){
            if(u1[i]!=u2[i])cnt++;
        }
        if(cnt==1){
            s='"'+s+'"';
            t='"'+t+'"';
            vector<int> v1,v2;
            vector<string>u1,u2;
            for(int i=0;i<s.size();i++){
                if(s[i]=='"')v1.push_back(i);
            }
            for(int i=0;i<v1.size();i+=2){
                u1.push_back(s.substr(v1[i]+1,v1[i+1]-v1[i]-1));
            }
            for(int i=0;i<t.size();i++){
                if(t[i]=='"')v2.push_back(i);
            }
            for(int i=0;i<v2.size();i+=2){
                u2.push_back(t.substr(v2[i]+1,v2[i+1]-v2[i]-1));
            }
            int cnt1=0;
            for(int i=0;i<u1.size();i++){
                if(u1[i]!=u2[i])cnt1++;
            }
                
            
            
            
            if(cnt1==0)cout<<"CLOSE"<<endl;
            else cout<<"DIFFERENT"<<endl;
        }
        else cout<<"DIFFERENT"<<endl;
    }
    }
}